기본 패턴
yaml
services:
app:
build: .
adminer:
image: adminer
profiles:
- debug설명
profiles는 모든 서비스를 항상 띄우지 않고, 필요할 때만 일부 서비스를 선택적으로 포함할 수 있게 해 줍니다.- 개발 중에는 DB 관리 UI, 메일 테스트 서버, mock 서비스처럼 "가끔만 필요한 보조 서비스"가 자주 생기는데, 이런 경우에 특히 잘 맞습니다.
- 핵심 서비스는 기본으로 켜 두고, 보조 서비스만 profile로 묶으면 기본 실행 명령이 더 가벼워집니다.
- override 파일이 "환경별 설정 차이"를 분리하는 도구라면,
profiles는 "같은 환경 안에서 선택적 구성"을 다루는 도구라고 보면 이해가 쉽습니다. - 서비스 수가 늘어날수록 "항상 필요한 것"과 "상황에 따라 필요한 것"을 분리하는 기준이 중요해집니다.
짧은 예제
bash
docker compose --profile debug up
docker compose --profile debug --profile tools up빠른 정리
| 항목 | 설명 |
|---|---|
| 기본 서비스 | profile 없이 항상 포함 |
| profile 서비스 | 명시할 때만 포함 |
| 용도 | 디버그 도구, 보조 서비스 |
| 장점 | 기본 실행 구성을 단순화 |
주의할 점
profiles는 편리하지만, 핵심 서비스까지 과하게 분리하면 팀원이 어떤 조합으로 띄워야 하는지 헷갈리기 쉽습니다.
"선택적 서비스"에만 제한적으로 쓰는 편이 가장 안정적입니다.
참고 링크
1 sources