본문 바로가기

Docker & K8S

Chapter2 - Dockerfile 작성

안녕하세요 개발자정씨입니다.

이번 게시글에서는 제가 만든 App에 Dockerfile을 작성하고 이를 기반으로 container를 만드는 작업을 진행해 보겠습니다.

 

1. Dockerfile 작성

  • 우선 App은 저의 자체 프로젝트(https://devjeong-note.tistory.com/50)를 사용하였습니다.
  • 해당 프로젝트에 아래와 같이 간략하게 Dockerfile을 작성해 보았습니다.
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
 FROM  사용할 이미지 선택
 WORKDIR  컨테이너 내 작업 디렉토리 위치
 COPY  파일 디렉토리를 컨테이너의 파일 시스템 경로로 복사 (소스경로, 대상경로 순)
 RUN  Docker 이미지를 빌드할 때 실행되는 명령어
 CMD  빌드된 Docker 이미지가 실행될때 사용되는 명령어

 

2. 이미지 빌드

  • 아래의 명령어를 이용하면 이미지를 빌드할 수 있습니다.
docker build -t main-server .

 

 

  • 아래 명령어를 통해 이미지가 정상적으로 빌드 된 것을 확인 할 수 있습니다.
docker images

 

 

3. 이미지 실행

  • 저번 게시글에서 다룬것 처럼 아래의 명령어로 컨테이너를 실행 할 수 있습니다.
docker run --name server-container -p 3000:3000 main-server

 

 

4. 보완 1

  • 현재 COPY 명령어를 이용해 프로젝트 안에 있는 모든 파일들을 복사하고 있습니다.
  • 하지만 node_module와 같이 굳이 복사할 이유가 없는 파일들이 존재합니다.
  • 이때 .dockerignore을 사용할 수 있습니다. 내용은 아래와 같이 작성하시면 됩니다.
node_modules/

 

 

4. 보완 2

  • 위에서 작성한 dockerfile을 수정하여 pm2로 프로세스를 관리할 수 있게 해보겠습니다.
  • 아래와 같이 dockerfile을 수정하고 이미지를 생성해줍니다.
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
RUN npm install -g pm2
CMD ["pm2-runtime", "app.js"]

 

 

  • 아래 명령어를 통해 container에 bash로 직접 접근할 수 있습니다.
docker exec -it server-container /bin/bash

 

 

  • 직접 접근하여 pm2를 통해 app이 실행된 것을 확인 할 수 있습니다.

'Docker & K8S' 카테고리의 다른 글

Chapter3 - docker-compose  (0) 2023.10.25
Chapter1 - 설치 및 실행  (0) 2023.09.09