Docker Compose에서의 환경 변수 우선순위

Docker Compose에서의 환경 변수 우선순위 (Environment variables precedence in Docker Compose)

같은 환경 변수가 여러 소스에 설정되어 있을 때, Docker Compose는 그 변수의 값을 결정하기 위해 우선순위 규칙을 따라요. 이 페이지는 여러 위치에 정의된 환경 변수의 최종 값을 Compose가 어떻게 결정하는지 설명해요.

출처: 문서

본문

우선순위 순서(높음 → 낮음)는 다음과 같아요:

  • (CLI에서 설정)
  • (CLI의 --env 인자)
  • Compose 파일의 environment 속성
  • Compose 파일의 env_file 속성
  • .env 파일

간단한 예시 (Simple example)

Compose 파일의 environment 속성:

$ cat ./webapp.env
NODE_ENV=test

$ cat compose.yaml
services:
  webapp:
    image: 'webapp'
    env_file:
     - ./webapp.env
    environment:
     - NODE_ENV=production

environment 속성이 우선해요:

$ docker compose run webapp env | grep NODE_ENV
NODE_ENV=production

env_file의 값보다 environment에 직접 적은 값이 더 높은 우선순위를 가져요.

고급 예시 (Advanced example)

이미지 버전을 정의하는 환경 변수 같은 경우를 예로 들어, 여러 소스가 결합될 때 어떤 값이 최종적으로 적용되는지 원본 문서의 표에서 확인할 수 있어요. 표는 각 소스의 우선순위와 최종 결과를 보여줘요.

더 알아보기 (Learn more)