민프

[Docker][Docker-Compose] 🐳 2. docker-compose.override.yml란? - 환경별 설정을 나누는 진짜 이유 본문

Backend/[Docker]

[Docker][Docker-Compose] 🐳 2. docker-compose.override.yml란? - 환경별 설정을 나누는 진짜 이유

민프야 2025. 5. 14. 20:00

 

1. 왜 override 파일이 필요한가?

보통 운영 환경(production)과 개발 환경(development)은 설정이 다릅니다.

구분 개발(dev) 운영(prod)
로그 console.log 출력 파일 저장
DB local MySQL 클라우드 RDS
NODE_ENV development production
리빌드 자주 거의 없음

docker-compose.override.ymldocker-compose.yml의 설정을 자동으로 덮어씌우기 위한 개발자 전용 확장 설정입니다.

 


2. 작동 방식

// 이렇게 하셔도 되지만
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

// 기본적으로 docker-compose.override.yml만 사용중이시라면 아래와 같이 하셔도 적용 됩니다.
docker-compose up

이 명령어는 내부적으로 아래 두 파일을 자동 병합합니다

docker-compose.yml + docker-compose.override.yml

 

예시를 좀 보여드리자면

 

# docker-compose.yml

services:
  app:
    build: .
    environment:
      - NODE_ENV=production

 

# docker-compose.override.yml
 
 
 
 services:
  app:
    environment:
      - NODE_ENV=development

실행 시 최종적으로 NODE_ENV는 development로 동작합니다!


3. 실제 예시 (개발용 override)

# docker-compose.override.yml

services:
  app:
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development
    command: npm run start:dev

이렇게 하면 운영 배포 환경의 docker-compose.yml은 건드리지 않고, 로컬 개발자만 자신만의 개발 설정으로 실행할 수 있습니다.

 

만약 production을 위한 설정을 하고싶으시다면 아래 처럼 하셔도됩니다.

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

이렇게 하면 docker-compose.prod.yml기본 설정을 덮어씌우게 됩니다.

 

결론적으로 저는 
API 서버, Payment서버를
docker-compose로 dev, prod 각각 개발환경설정으로 올렸습니다.

 

 

Comments