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