도커 NestJs - #2 Postgres 붙이기

혀어어언·2023년 4월 9일
2

Docker

목록 보기
9/11

#1로 생성한 개발환경에 Postgres 붙이기

Compose 파일 작성

# 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(파일 수정 시 필요)

0개의 댓글