# docker-compose.yml 파일은 컨테이너 내부에서 이미지를 어떻게 실행시킬지에 대한 지시를 나타냅니다.
services:
api:
build:
dockerfile: Dockerfile
context: .
# dockerfile에서 로컬에서 필요로 하지 않는 단계들을 무시하고 오직 development 단계만을 빌드할 것을 나타냅니다.
target: development
volumes:
# 현재 경로와 컨테이너 내부의 /usr/src/app 디렉토리를 볼륨 마운팅할 것을 나타냅니다.
# 데이터가 유지되고, 핫 리로딩을 실행할 부분을 나타냅니다.
- .:/usr/src/app
# 도커에게 컨테이너 내부로 .env 파일을 로드해야 함을 알려줍니다.
env_file:
- .env
# 도커에게 이미지의 development 단계에 대한 npm run start:dev 명령어를 실행해야 함을 알려줍니다.
command: npm run start:dev
ports:
- 3000:3000
# app에 의존성 주입
depends_on:
- postgres
postgres:
image: postgres
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- '5432:5432'
volumes:
- docker-nest-postgres:/var/lib/postgresql/data
volumes:
docker-nest-postgres:
Docker Compose 파일을 수정하였기 때문에 실행 중인 컨테이너를 제거 후 다시 실행합니다.
$ docker-compose down
$ docker-compose up -d -V --build
# -d 컨테이너 백그라운드에서 실행
# -V 컨테이너에 종속성의 강제로 새로 설치(새로운 npm 패키지를 설치했다면 필요합니다)
# --build 이미지 re-build(파일 수정 시 필요)