C.W.K.
Stream
Lesson 04 of 04 · published

Profile & Override — 한 repo 로 dev vs prod

~14 min · compose, operations

Level 0Container 호기심
0 XP0/36 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Profile: 옵션 서비스

어떤 서비스는 필요할 때만 시작해야 해: DB GUI, 메일 catcher, 디버그 대시보드. profile 태그하면 Compose 가 디폴트로 무시.

Override 파일: compose 파일 둘 없이 dev vs prod

Compose 가 자동으로 compose.yamlcompose.override.yaml 머지 (override 있으면). 관례: base 파일은 prod 모양, override 파일은 dev 트윅 (bind mount, --reload, 디버그 포트). production 은 대신 -f compose.yaml -f compose.prod.yaml 씀.

Code

옵션 디버그 서비스 위한 profile·yaml
services:
  api:
    build: ./api
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret

  # Optional services
  adminer:
    image: adminer
    profiles: [debug]
    ports: ["8080:8080"]
  mailhog:
    image: mailhog/mailhog
    profiles: [debug]
    ports: ["1025:1025", "8025:8025"]
Hot-reload dev 위한 override·yaml
# compose.override.yaml — auto-loaded in dev
services:
  api:
    volumes:
      - ./api:/app
    environment:
      APP_ENV: development
    command: uvicorn main:app --reload --host 0.0.0.0

# Use:
#   docker compose up -d            ← merges base + override (dev)
#   docker compose --profile debug up -d   ← also starts debug services
#   docker compose -f compose.yaml -f compose.prod.yaml up -d  ← prod

External links

Exercise

본인 compose stack 하나에 debug profile 추가, adminer (또는 pgadmin) 와 mailhog 포함. --profile debug 일 때만 시작 확인. 그 다음 hot-reload 위해 소스 bind mount 하는 compose.override.yaml 추가. -f 로 dev 와 prod 전환, 차이 확인.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.