ARG (Build-time 변수)
"Dockerfile 빌드 시점에 외부에서 값을 주입할 수 있는 변수"
- ENV와 유사하지만, ARG는 빌드 타임에만 유효
- 사용자 정의 인자를 통해 유연한 Dockerfile 구성 가능
항목 설명
| 🆚 ENV와의 차이점 | ARG는 **빌드 타임(build-time)**에만 유효하고, 컨테이너 내부에서는 사용 불가 (단, ENV에 전달해 연계 사용 가능) |
| 🛠️ 목적 | 빌드 시 설정을 외부에서 주입 → 사용자 정의 인자를 통해 유연한 Dockerfile 작성 가능 |
| 🔒 보안 | 빌드 후 이미지에서는 ARG 값이 남지 않음 → 민감 정보 처리에 상대적으로 안전 (단, Docker history엔 남을 수 있음) |
사용 예시
# Dockerfile
ARG BASE_IMAGE=python:3.10-slim
FROM ${BASE_IMAGE}
ARG APP_PORT=8080
ENV PORT=${APP_PORT}
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
- ARG BASE_IMAGE: 어떤 베이스 이미지를 사용할지 결정 가능
- ARG APP_PORT → ENV PORT로 전달하여 런타임에도 활용 가능
빌드 시 사용법
docker build \\
--build-arg BASE_IMAGE=python:3.11-slim \\
--build-arg APP_PORT=5000 \\
-t myapp .
✅ 빌드 설정을 외부에서 ARG 값으로 넘김 → 유동적인 빌드 구성 가능 // 환경 맞춤형 이미지 생성 가능
⚠️ 사용 시 주의사항
항목 설명
| ARG는 FROM 이후에만 사용 가능 | FROM에 쓰려면 반드시 FROM 전에 해당 ARG를 선언해야 함 |
| ENV와 연계 사용 시 | ARG → ENV 형태로 넘기면 런타임 변수로 활용 가능 |
| 캐시 영향 있음 | ARG 값이 다르면 레이어 캐시가 무효화되어 새로 빌드됨 |
| 보안 이슈 고려 | ARG는 빌드 타임에만 존재하지만 docker history 명령어로 노출될 수 있음 |
요약
- ARG는 빌드 타임 변수
- 런타임에는 사라지므로, ENV와 연계하여 활용 가능
- 외부 입력으로 빌드 설정을 바꾸고 싶을 때 가장 유용
'virtual environment > Docker' 카테고리의 다른 글
| Docker 명령어 모음 (0) | 2025.06.12 |
|---|---|
| [Docker] ONBUILD (0) | 2025.06.12 |
| .dockerignore (0) | 2025.06.12 |
| Dockerfile Multi-Stage Build (0) | 2025.06.12 |
| DevContainer를 이용한 VS Code 개발 환경 구성 (Docker 기반) (0) | 2025.06.12 |