Docker Compose YAML 앵커(&)로 반복 설정 제거하기
문제
Docker Compose에서 비슷한 서비스를 여러 개 띄울 때 image, volumes, restart 같은 공통 설정을 매번 복붙하고 있었다. 서비스가 10개면 같은 내용이 10번 반복된다.
해결
# 공통 설정을 앵커(&)로 정의
x-app-common: &app-common
image: my-app:latest
volumes:
- ./cert:/app/cert:ro
restart: unless-stopped
dns:
- 172.16.0.1
services:
# 병합(<<)으로 공통 설정 가져오고, 개별 설정만 추가
app01:
<<: *app-common
container_name: app01
environment:
- APP_ID=01
- PORT=3001
app02:
<<: *app-common
container_name: app02
environment:
- APP_ID=02
- PORT=3002
app03:
<<: *app-common
container_name: app03
environment:
- APP_ID=03
- PORT=3003
핵심 포인트
x-접두사로 시작하는 키는 Docker Compose가 무시하는 확장 필드다. 여기에 공통 설정을 모아두면 깔끔하다.&이름으로 앵커를 정의하고,<<: *이름으로 병합한다. 병합 후에 같은 키를 다시 쓰면 오버라이드된다.- 서비스가 많아질수록 효과가 크다. 실제로 10개 서비스를 운영하면서 공통 설정 변경할 때 한 곳만 수정하면 되니까 실수가 줄었다.