빌드 타임 인수(ARG)와 런타임 환경 변수(ENV)

wangjh789·2022년 8월 25일
1

docker

목록 보기
13/25

도커는 빌드 타임 인수와 런타임 환경 변수를 지원해 유연한 이미지와 컨테이너를 만들 수 있다.

ENV

환경 변수는 런타임 (docker run) 에 유용하게 사용된다.

ENV PORT 80

EXPOSE $PORT
app.listen(process.env.PORT);

도커파일에 환경 변수를 지정하면 도커 파일내에서도 쓸 수 있고, 코드에도 사용할 수 있다.

docker run --name feedback-app -p 3000:8000 --rm -d --env PORT=8000 -v /app/node_modules -v feedback:/app/feedback -v /app/temp -v "<바인드 마운트>:/app:ro" feedback:env

--env PORT=8000 를 통해 docker run 에서 환경 변수를 지정할 수 있어 이미지를 재빌드 하지 않아도 된다는 장점이 있다.

--env-file <환경설정 파일> 플래그로 환경 파일의 셋팅을 환경 변수로 넘길 수 있다.

PORT=8000

원래 컨테이너에서 수행중인 애플리케이션은 80번 포트에서만 listen 하고 있었다..

보안 데이터를 Dockerfile에 직접 포함하면 안된다. 그렇기 때문에 환경 변수 파일을 이용해야 한다. 그렇지 않으면 이미지에 값이 포함되며 docker history <이미지> 를 통해 값을 읽을 수 있다.

ARG

이미지를 빌드할 때, 다른 값을 끼워 넣을 수 있다. docker build 시에 사용

ARG DEFAULT_PORT=80

ENV PORT $DEFAULT_PORT

EXPOSE $PORT

ARG 도커파일 내에서만 쓸 수 있다.
docker build -t feedback:dev --build-arg DEFAULT_PORT=8000 .

원래 이미지에 빌드된 애플리케이션은 사용자가 env를 넣지 않는다면 80번 포트를 기본으로 사용한다.
ARG를 통해 이미지를 빌드할 때 사용자가 arg로 기본으로 사용할 port를 지정할 수 있게 되었다.

profile
기록

0개의 댓글