본문 바로가기
devops/docker

docker env, arg 차이점

by 아이티.파머 2024. 4. 7.
반응형

docker env, arg 차이점

docker 에서 env 와 arg는 변수로 선언 할 때 사용한다. 둘 다 비슷해 보이긴 하지만 다른 명령어 임을 기억하자 .

1. ARG (Argument)

  • docker 빌드중에만 사용되는 빌드 타임 환경 변수이다.
  • docker 명령어에서 ‘—build-arg’ 플래그(FLAG)를 사용하여 값을 전달 할 수 있다.
  • 주로 이미지 빌드 프로세서에서 인자를 전달하고 이미지의 컨텍스트에 따라 변경 가는한 값으로 사용된다.

docker 이미지내에서는 사용 불가능 하며, 빌드중에만 사용된다.

예시:

 

ARG VERSION=latest
FROM ubuntu:$VERSION

 

실행 예시:

docker build --build-arg VERSION=1.0 -t myimage ./Dockerfile .

실행예시 (멀티)

여러개의 변수를 전달할때는 다음과 같이 ‘—build-arg’ 플래그를 이용하여 전달 할 수 있다. 각 ARG는 공백으로 구분한다.

docker build --build-arg ARG1=value1 --build-arg ARG2=value2 -t myimage .

2. ENV (Environment)

  • docker 컨테이너 안에서 실행 중에 사용되는 런타임 환경 변수를 정의 한다.
  • 주로 컨테이너 내에서 실행되는 프로세스에서 사용하는 환경 변수를 설정 하는데 사용한다.
  • dockerfile 에서 정의된 환경변수는 기본적으로 컨테이너 내에서 사용 가능하며, docker run 명령어 에서 ‘e’ 플래그를 사용하여 재정의 가능하다.

SpringBoot 에서는 active profile 에대해 재정의 할 때 사용한다.

 

예시:

ENV USE_PROFILE=local
# Run the jar file
ENTRYPOINT ["java","-Dspring.profiles.active=${USE_PROFILE}","-Djava.security.egd=file:/dev/./urandom","-jar","/spring-cloud-eureka.jar"]

 

실행예시:

docker run -p 8761:8761 -d --restart always -e USE_PROFILE=prod --name=spring-discovery spring-cloud-eureka-server:latest

 

 

반응형