본문 바로가기
linux/docker

Docker arg와 env사용 방법

by 후린트 2020. 9. 16.
반응형

docker에서 arg와 env에 대한 사용 방법을 정리 

arg : Dockerfile build시에 사용하는 변수 

env : container 시작시에 사용하는 변수 

Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=./target/libs/*.jar
# ARG는 Dockerfile build시에 사용
ARG ARG_PROFILE
ENV PROFILE=${ARG_PROFILE}
COPY ${JAR_FILE} app.jar
EXPOSE 24500
ENTRYPOINT exec java -jar -Dspring.profiles.active=${PROFILE} /app.jar
# ARG_PROFILE변수에 QA값이 바인딩 되면서 빌드시에 PROFILE 변수에 값이 들어간다.
$ docker build --build-arg ARG_PROFILE=QA -f ./Dockerfile /usr/projects/rootPath --tag qa_docker
# ENV PROFILE 변수에 QA로 세팅된걸 확인할 수 있다.
$ docker inspect qa_docker
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin",
"LANG=C.UTF-8",
"JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk",
"JAVA_VERSION=8u212",
"JAVA_ALPINE_VERSION=8.212.04-r0",
"PROFILE=QA"
],
# docker run 실행시 환경변수를 추가하여 오버라이딩이 가능하다.
$ docker run --env PROFILE=LIVE qa_docker
# PROFILE 변수에 LIVE가 세팅된걸 확인
$ docker inspect [qa_docker_container_id]
"Env": [
"PROFILE=LIVE",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin",
"LANG=C.UTF-8",
"JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk",
"JAVA_VERSION=8u212",
"JAVA_ALPINE_VERSION=8.212.04-r0"
],
#docker 를 이용한 springboot 실행시 profile 변경이 가능하다.
$ docker run --env PROFILE=LIVE qa_docker
$ docker run --env PROFILE=TEST qa_docker
$ docker run --env PROFILE=QA qa_docker

 

env 옵션을 이용하여 docker를 이용하여 spring boot 실행시에 profile을 지정할 수 있다. 

 

반응형