ADR-001 compose 환경 분리 전략 = base + dev/prod override + -p 프로젝트명
상태
채택 (2026-07-03)
맥락
같은 머신에서 dev/prod 두 풀스택(backend + MySQL/Mongo/Redis/Kafka + mock)을 물리 분리해야 한다(FR-2). 별도 머신·클라우드 아님. docker-compose.yml은 ⑤·⑦와 공동 수정 대상이라 파일 구조가 곧 협업 경계다.
결정
docker-compose.yml(base)에 서비스 정의만(내부 포트·healthcheck·depends_on, 호스트 포트/환경별 값 없음).docker-compose.dev.yml·docker-compose.prod.yml이 호스트 포트·APP_ENV·볼륨·이미지 태그를 override 병합.docker compose -p sports-dev/-p sports-prod로 컨테이너·네트워크·볼륨 네임스페이스 완전 격리.- 실행:
docker compose -p sports-<env> -f docker-compose.yml -f docker-compose.<env>.yml up -d.
대안과 미채택 사유
- profile 단일 파일: 한 프로젝트=한 네트워크·볼륨이라 두 병렬 스택을 격리 못 함. 파일 집중으로 ⑤·⑦ Single Writer 충돌 심화.
- dev/prod compose 2벌 완전 복제: 서비스 정의 중복→드리프트. ⑤·⑦가 두 파일 모두 수정해야 함.
결과
- 공통 정의 1벌 유지 + 완전 격리.
-p가 볼륨·네트워크 접두사를 자동 부여(추가 설정 0). - ⑤·⑦는 추가
-f(observability/lb)만 얹어 base·override를 건드리지 않음(ADR-002).