이번 프로젝트에서 도커를 쓰려는 가장 큰 이유는 배포에서의 편의성이다.
이전 NCP 의 Classic 서버를 사용했을 때, Ubuntu 18 버전만 지원이 돼서 20 버전으로 업그레이드 후 배포를 진행하면서 도커를 꼭 써야겠다고 생각하게 되었고 Github actions 로 자동배포를 구현하면서 도커를 쓰면 편하겠다고 느껴서 도커를 쓰게 되었다.
도커는 컨테이너 기반의 가상화 플랫폼이다.
가상화를 하는 방법에는 가상환경을 사용할 수도 있지만 가상환경에서는 각 OS 의 라이브러리, 커널 등을 모두 포함해야 하기 때문에 이미지가 너무 커진다는 단점이 있다.
이를 컨테이너가 해결해준다.
도커를 사용하면 도커 엔진 위에 컨테이너가 올라가고 컨테이너 안에는 어플리케이션을 구동하는 데 필요한 라이브러리와 실행 파일만 존재한다. 그래서 이미지의 크기가 많이 줄어들고 Host OS 의 입장에서도 그냥 프로세스를 실행하는 것 처럼 실행할 수 있어진다.
여기서 컨테이너라는 개념을 통해 프로세스 단위의 독립적인 환경을 구성할 수 있다.
도커를 사용하기 위해 먼저 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’ 으로 설정