안녕하세요.

 

컨테이너 기술인 도커를 돌려볼려고 합니다.

 

목표는 아주 쉬운 기초입니다.

 

node.js 프로그래밍 언어로 만들어진 간단한 api 요청을 받아주는 웹사이트를 도커 컨테이너에 띄우는 것이 목표입니다.

 

따라서 도커 데스크탑 등을 설치해야 구동할 수 있습니다.

윈도우, Mac os에서는 도커 데스크탑을 설치하는 것이 편합니다.

리눅스에서는 도커 엔진을 깔면 되죠.

 

--

이제 작업을 시작합니다.

node.js로 된 간단한 웹서버 하나를 만듭니다.

요청을 받으면 Hello World! 라고 응답하는 기능입니다.

 

디렉토리를 우선 만듭니다.

 

mkdir nodejs-docker-example 

nodejs-docker-example이라는 디렉토리를 생성한 것입니다.

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

이 파일을 app.js 라고 저장합니다.

{
  "name": "nodejs-docker-example",
  "version": "1.0.0",
  "description": "Node.js Docker Example",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

이 파일을 package.json 이라고 저장합니다.

# Use the official Ubuntu base image
FROM ubuntu:latest

# Update package list and install Node.js
RUN apt-get update
RUN apt-get install -y nodejs
RUN apt-get install -y npm

# Set the working directory in the container
WORKDIR /app

# Copy package.json and package-lock.json to the container
COPY package.json ./

# Install app dependencies
RUN npm install

# Copy the application files to the container
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Command to run the application
CMD ["npm", "start"]

# Add a command to create a start_success file in /tmp/
RUN touch /tmp/start_success

이 파일을 Dockerfile 이라고 저장합니다.

 

app.js
0.00MB
Dockerfile
0.00MB
package.json
0.00MB

 

 

위 파일을 nodejs-docker-example 디렉토리에 집어넣습니다.

커맨드라인 프로그램을 켭니다.

 

docker build -t nodejs-docker-example .

더보기

-t nodejs-docker-example: 빌드한 이미지의 태그를 지정합니다.
-f Dockerfile-custom: 사용할 도커파일을 지정합니다. 여기서는 Dockerfile-custom을 사용합니다.
.: 현재 디렉토리를 빌드 컨텍스트로 사용합니다. 즉, 현재 디렉토리에 있는 모든 파일과 도커파일을 빌드에 포함시킵니다.

 

docker run -p 3000:3000 --name my-nodejs nodejs-docker-example

 

앞 3000포트는 호스트(로컬머신)의 포트입니다.

뒤 3000포트는 컨테이너의 포트입니다.

두 포트를 매핑합니다.

 

컨테이너 이름은 my-nodejs 로 하였습니다.

 

컨테이너 내부를 접근하고 싶다면

docker exec -it my-nodejs /bin/bash 로 접속해서 볼 수 있습니다.

 

크롬에서 http://localhost:3000 을 요청하게 되면 Hello World!를 볼 수 있습니다.

'DevOps' 카테고리의 다른 글

APM, JAVA Agent  (0) 2024.03.06
GitOps 참고글  (0) 2024.02.23

안녕하세요. 첫 글입니다.

쿠버네티스 실습을 하려고 합니다.

 

스터디를 목적으로 진행하려고 하며 이 환경을 차근 차근 알아볼 예정입니다.

 

----

virtualbox를 활용하여 가상머신 virtual machine(이하 vm)에서 쿠버네티스를 설치, 운영하는 것을 해보려고 한다.

virtualbox 설치, ubuntu 20.04 설치는 이 포스트에서 다루지 않는다.

구글 검색 추천!

 

총 3개의 vm을 준비한다.

node1  192.168.50.61

node2  192.168.50.62

node3  192.168.50.63

 

--

1) ubuntu 20.04

 

필요한 셋팅을 아래 순서대로 진행한다.

 

sudo apt install net-tools

 

sudo vi /etc/sudoers

# User privilege specification
root    ALL=(ALL:ALL) ALL
sunsh   ALL=(ALL) NOPASSWD:ALL

 

sudo vi /etc/sudoers.d/sunsh

sunsh   ALL=(ALL) NOPASSWD:ALL

 

 

네트워크

sudo vi 00-installer-config.yaml

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      dhcp4: no
      addresses:
              - 192.168.50.61/24
      nameservers:
              addresses: [8.8.8.8, 8.8.4.4]
    enp0s9:
      dhcp4: no
      addresses:
              - 192.168.50.61/24
  version: 2

각 vm마다 해당 아이피를 입력합니다. 61,62,63으로 정했다.

 

sudo netplan apply

 

방화벽 해제

sudo ufw disable

 

 

우선 여기까지로 다음 포스트를 참고한다.

+ Recent posts