Dockerfile - ENV, ARG

Human Being·2022년 5월 1일
0

Docker

목록 보기
5/8
post-thumbnail

env 관리

ENV

FOO라는 환경 변수에 /bar를 담고
FOO에 대해 WORKDIR를 하였을 때
pwd(현재 위치)를 출력해보면
/이 아니라 /bar가 나오게 된다

ENV FOO=/bar
WORKDIR ${FOO}   # WORKDIR /bar
RUN pwd

.env 파일로

Dockerfile과 같은 경로에 env 파일을 위치시킨 뒤
다음의 명령문을 입력

COPY .env ./
RUN export $(cat .env | xargs)

사실 Dockerfile에 ENV 라는 명령어가 있는데 굳이 이 방법을 쓰는 이유는
env 파일 안에 적은 내용들이 여러 곳에서 동시에 쓰인다면
매번 Dockerfile을 일일이 수정하지 않고
파일 하나만 바꾸면 되기에 관리하기 편했다

ARG

환경변수 중에서도 image build 시에만 사용되고
그 이후로 필요 없는 변수는 ARG로 생성한다

아래 그림에서 보다시피 ARG는 Image가 생성되고 나면
자연스레 없어지는 변수이다

그래서 Container 내부에서 사용되는 변수라면
ARG가 아닌 ENV를 사용해야 한다

ARG는
다음과 같이 Dockerfile에 직접적으로 명시하거나

ARG FOO=hello

변수로 명시한 뒤 build 시에 변수에 값을 넘겨 지정해볼 수 있다

ARG FOO=${var}
docker build --build-arg var=hello .

if else로 상황별 관리

환경변수가 달라질 때마다
그에 따라 다운로드 받아야 하는 파일도 달라진다면
shell script로 관리하면 된다

ARG FOO

RUN if [ "$FOO" -eq "A" ] ; then 
		echo "$FOO is A" ; 
    else 
    	echo "$FOO is not A" ; 
    fi

출처 : https://stackoverflow.com/questions/39597925/how-do-i-set-environment-variables-during-the-build-in-docker

0개의 댓글