도커를 쓰려는 이유

이번 프로젝트에서 도커를 쓰려는 가장 큰 이유는 배포에서의 편의성이다.

이전 NCP 의 Classic 서버를 사용했을 때, Ubuntu 18 버전만 지원이 돼서 20 버전으로 업그레이드 후 배포를 진행하면서 도커를 꼭 써야겠다고 생각하게 되었고 Github actions 로 자동배포를 구현하면서 도커를 쓰면 편하겠다고 느껴서 도커를 쓰게 되었다.

Docker 란?

도커는 컨테이너 기반의 가상화 플랫폼이다.

가상화를 하는 방법에는 가상환경을 사용할 수도 있지만 가상환경에서는 각 OS 의 라이브러리, 커널 등을 모두 포함해야 하기 때문에 이미지가 너무 커진다는 단점이 있다.

이를 컨테이너가 해결해준다.

도커를 사용하면 도커 엔진 위에 컨테이너가 올라가고 컨테이너 안에는 어플리케이션을 구동하는 데 필요한 라이브러리와 실행 파일만 존재한다. 그래서 이미지의 크기가 많이 줄어들고 Host OS 의 입장에서도 그냥 프로세스를 실행하는 것 처럼 실행할 수 있어진다.

여기서 컨테이너라는 개념을 통해 프로세스 단위의 독립적인 환경을 구성할 수 있다.

Dockerfile 작성

도커를 사용하기 위해 먼저 Dockerfile 을 작성해줘야 한다. Dockerfile 에는 한 마디로 서버 운영 기록 이 작성되어 있다고 보면 된다.

간단하게 우리 서버의 Dockerfile 을 이해할 수 있다.

FROM node:20                        

WORKDIR /catchy-tape

COPY . .

RUN npm install
RUN npm run build

EXPOSE 3000
CMD [ "npm", "run", "start:prod" ]

FROM node:20 - Node.js 20 버전의 공식 이미지 사용

WORKDIR /catchy-tape - 현재 작업 디렉토리를 ‘/catchy-tape’ 으로 설정