요약
Mac M1 환경에서 Docker Compose 를 이용하여 NestJS 개발 환경을 도커 컨테이너로 실행합니다.
docker-compose.yaml 파일 생성
version
는 docker compose의 버전을 의미합니다.
services
는 해당 docker compose 사용될 docker service를 정의하는 영역을 의미합니다.
api
는 docker service의 이름을 정의합니다.
build
해당 서비스를 Container로 빌드할 때 필요한 옵션들을 정의합니다.
dockerfile
해당 서비스를 빌드할 때 Dockerfile를 참고합니다.
이때, 해당 Dockerfile에 대한 경로를 정의합니다.
context
는 docker build 명령을 실행할 경로를 뜻합니다.
ports
는 호스트포트번호:컨테이너포트번호
를 매핑할 때 사용됩니다.
volumes
는 로컬 디렉터리에 경로와 도커 컨테이너의 경로를 동기화할 때 사용됩니다.
command
는 도커 컨테이너가 실행될 때 입력되는 명령어를 의미합니다.
version: '3.8'
services:
api:
build:
dockerfile: ./Dockerfile
context: .
ports:
- "3000:3000"
volumes:
- ./:/app/
command: ["sh", "-c", "sleep 20 && npm run start:dev"]
Dockerfile 파일 생성
FROM
해당 도커 이미지를 기준으로 도커 컨테이너를 생성합니다.
WORKDIR
도커 컨테이너의 작업 디렉토리를 지정합니다. 로컬 파일들을 도커 컨테이너로 복사할 때 위치입니다.
COPY
현재 로컬 컴퓨터 안에 있는 파일들을 도커 컨테이너 안으로 복사하는 기능을 말합니다.
RUN
도커 이미지 위에 패키지를 설치하거나 빌드할 때 사용합니다.
CMD
docker 컨테이너가 실행(run)될 때 사용할 명령어를 작성합니다.
FROM node:14.17.4-alpine
WORKDIR /app
COPY package.json ./
RUN npm i
COPY . .
RUN npm run build
CMD [ "npm", "run", "start:dev" ]
Docker Container 간 네트워크를 고려하여 환경 변수 수정
해당 내용은 각 개발 환경마다 상이하기 때문에 별도로 정리하지는 않았습니다.
다만, 간혹 간과할 수 있는 부분이기 때문에 언급합니다.
Docker Compose build
해당 명령어를 한 번 실행한 이후부터는 도커 이미지가 빌드되어 도커 이미지 캐시 스토리지에 저장됩니다.
따라서, build 옵션을 제거하고 백그라운드로 돌리는 -d 옵션을 사용하면 편리합니다.
docker-compose up --build
Reference
'Dev > Docker' 카테고리의 다른 글
Flask API Server Dockerized (0) | 2022.11.17 |
---|---|
Docker-Compose를 활용한 MySQL 8.0.28 구축 (Mac M1) (0) | 2022.05.18 |