안녕하세요.

 

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

 

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

 

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!를 볼 수 있습니다.

+ Recent posts