FOO라는 환경 변수에 /bar를 담고
FOO에 대해 WORKDIR를 하였을 때
pwd(현재 위치)를 출력해보면
/이 아니라 /bar가 나오게 된다
ENV FOO=/bar
WORKDIR ${FOO} # WORKDIR /bar
RUN pwd
Dockerfile과 같은 경로에 env 파일을 위치시킨 뒤
다음의 명령문을 입력
COPY .env ./
RUN export $(cat .env | xargs)
사실 Dockerfile에 ENV 라는 명령어가 있는데 굳이 이 방법을 쓰는 이유는
env 파일 안에 적은 내용들이 여러 곳에서 동시에 쓰인다면
매번 Dockerfile을 일일이 수정하지 않고
파일 하나만 바꾸면 되기에 관리하기 편했다
환경변수 중에서도 image build 시에만 사용되고
그 이후로 필요 없는 변수는 ARG로 생성한다
아래 그림에서 보다시피 ARG는 Image가 생성되고 나면
자연스레 없어지는 변수이다
그래서 Container 내부에서 사용되는 변수라면
ARG가 아닌 ENV를 사용해야 한다
ARG는
다음과 같이 Dockerfile에 직접적으로 명시하거나
ARG FOO=hello
변수로 명시한 뒤 build 시에 변수에 값을 넘겨 지정해볼 수 있다
ARG FOO=${var}
docker build --build-arg var=hello .
환경변수가 달라질 때마다
그에 따라 다운로드 받아야 하는 파일도 달라진다면
shell script로 관리하면 된다
ARG FOO
RUN if [ "$FOO" -eq "A" ] ; then
echo "$FOO is A" ;
else
echo "$FOO is not A" ;
fi