환경변수 (Environment variables)¶
Docker Compose 의 환경변수와 보간(interpolation) 은 재사용 가능하고 유연한 설정을 만들어, 환경(로컬/개발/프로덕션)에 따라 애플리케이션을 쉽게 배포하도록 해줍니다. 데이터스케쳐스 실무 관점에서 정리합니다.
개요¶
- 컨테이너 내부 환경에 환경변수를 설정하는 방법, 우선순위, 사전 정의 변수를 다룹니다.
- Compose 파일 안에서 환경변수를 보간(interpolation)해 쓰는 방법과 실제 우선순위를 구분해서 이해하는 것이 핵심입니다.
# compose.yaml 예시
services:
app:
image: myapp:latest
environment:
- MODE=prod
- DB_HOST=${DB_HOST:-localhost}
$( ... )/${VAR}문법으로 Compose 파일 안에서 호스트 셸·환경변수를 보간합니다.
컨테이너 환경변수 설정과 우선순위¶
environment:(compose) 로 컨테이너 환경변수를 직접 지정.- 우선순위(낮은 것부터): Compose 파일
environment보다 실제 OS 환경변수,.env파일, 그리고 셸이 더 높을 수 있습니다. 정확한 우선순위는 버전별로 다르므로 공식 문서를 확인하세요. .env파일은 Compose 파일이 위치한 디렉터리의 기본값 공급에 쓰이며, 컨테이너에 자동 주입되지 않습니다 — 명시적으로 참조해야 합니다.
사전 정의 환경변수¶
- Compose 는
COMPOSE_PROJECT_NAME,COMPOSE_FILE등 몇 가지 사전 정의 변수를 제공하며, 이들은 프로젝트 이름·파일 선택 등 실행 동작에 영향을 줍니다.
데이터스케쳐스 실무 관점¶
- 환경 분리: D-SKET 서비스의 로컬(위키 DB 5433)과 프로덕션 구성을
.env+ 보간으로 나눠, 코드 변경 없이 환경을 전환합니다. - 시크릿 분리: 비밀값(DB 패스워드·API 키)은
environment에 평문으로 두지 말고 Docker secrets 나 외부 시크릿 매니저로 공급합니다. - 각 마이크로서비스가 단일 compose 파일에 모두 정의되면 관리가 어려우므로,
서비스별로 파일을 나누고
extends/include로 조합합니다.
확인 필요¶
- 우선순위 규칙과 사전 정의 변수 세부는 Docker 버전별로 다르므로 사용 버전 공식 문서를 재확인하세요. (확인 필요)