[Dockerfile] ARG (Build-time 변수)

2025. 6. 12. 01:35·virtual environment/Docker

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
'virtual environment/Docker' 카테고리의 다른 글
  • Docker 명령어 모음
  • [Docker] ONBUILD
  • .dockerignore
  • Dockerfile Multi-Stage Build
yoon-k
yoon-k
  • yoon-k
    To be || Not To be
    yoon-k
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • Study (13)
        • Linux (6)
        • Computer Vision (1)
        • Coursera - Deep Learning (4)
        • Mathematics For Machine Lea.. (2)
      • Programming (12)
        • Python (2)
        • ETC. (10)
      • virtual environment (44)
        • Docker (29)
        • conda (4)
        • Cloud (11)
      • Robotics (9)
        • Jetson (7)
        • ROS (2)
      • Upstage (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    coursera
    OpenAI
    claude
    ORiN
    Installation
    LLM
    Jetson
    claude code
    업스테이지
    docker
    Solar
    google cloud platform
    도커
    nvidia
    Miniconda
    vscode
    futureofwork
    ambassador
    redeem code
    딥러닝
    conda
    코세라
    GCP
    upstage
    cursor
    오린
    Andrew Ng
    Anaconda
    API
    Deep Learning
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
yoon-k
[Dockerfile] ARG (Build-time 변수)
상단으로

티스토리툴바