Dockerfile에서 변수를 선언할 때 사용하는 명령어는 ENV와 ARG이다.
두 명령어 모두 값을 재정의할 수 있지만, 언제 사용되는지와 얼마나 오래 유지되는지에서 본질적인 차이가 있다.
ARG는 이미지 빌드 시점에만 사용되는 변수이고,
ENV는 빌드 이후 컨테이너 실행 시점까지 유지되는 환경 변수이다.
즉, 빌드 과정에서만 필요한 값이라면 ARG,
실행 환경에서 필요한 값이라면 ENV를 사용하는 것이 맞다.
1. 선언 방식 차이
ARG VERSION
ENV APP_ENV=production
- ARG는 기본값 없이 선언 가능
- ENV는 반드시 값이 필요
문법 차이는 크지 않지만, 역할은 완전히 다르다.
2. 값 재정의 시점
1) ARG → 빌드 시점
docker build --build-arg VERSION=1.0 .
이미지를 만들 때만 값이 적용된다.
2) ENV → 컨테이너 실행 시점
docker run -e APP_ENV=development myimage
컨테이너 실행 시 환경 변수를 바꿀 수 있다.
3. 가장 중요한 차이: 생명주기
1) ARG
이미지 빌드 중에만 존재하고 컨테이너 실행 후에는 접근 불가
2) ENV
빌드 시점부터 설정 가능하며 컨테이너 실행 후에도 유지, 애플리케이션에서 환경 변수로 사용 가능
4. 언제 무엇을 써야 할까?
- 빌드할 때만 필요한 값 → ARG
- 실행 환경에서 필요한 설정값 → ENV
ARG는 빌드 시점 전용 변수이고, ENV는 컨테이너 실행까지 유지되는 환경 변수이다.
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Airflow × Docker Compose 환경에서 Dockerfile 작성 후 실행 흐름 정리 (0) | 2026.02.24 |
|---|---|
| Docker 이미지 최적화(레이어 캐시와 도미노 무효화 구조 이해) (1) | 2026.02.18 |
| Dockerfile RUN vs CMD vs ENTRYPOINT: 실행 시점과 역할의 차이 (0) | 2026.02.18 |
| Dockerfile Shell 형식과 Exec 형식의 개념 (0) | 2026.02.18 |
| Docker Compose depends_on의 동작 원리와 한계 (0) | 2026.02.18 |