반응형
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
반응형
'devops > docker' 카테고리의 다른 글
dockerfile에 springboot profile 적용하기 (1) | 2024.04.07 |
---|---|
도커 실행 권한문제 - dial unix /var/run/docker.sock: connect: permission denied (0) | 2023.04.17 |
docker-compose mysql 설정 및 sql init (0) | 2022.01.14 |
docker-compose jenkins (0) | 2022.01.14 |
docker-compose 옵션 기본 명령어 (0) | 2021.04.29 |