320x100
320x100

docker run 명령에서 --env 혹은 --env-file 옵션

FROM alpine

ENV PORT=7777

EXPOSE $PORT

: ENV 지시자는 반드시 값을 초기화 해야한다

 

- 실행

// 이미지 빌드
docker build -t test .

// 컨테이너로 실행
docker run -e PORT=5656 test

: 이것을 실행하면 컨테이너 내부의 PORT 환경변수가 5656으로 변한 것을 확인할 수 있으나, EXPOSE한 PORT는 변하지 않는다

: 이유는 Dockerfile이 빌드되면서 빌드 타임에 EXPOSE 지시자의 값이 정해졌기 때문

 

 

 

 

 

ARG 및 ENV 지시자 사용

FROM alpine

ARG PORT
ENV PORT=$PORT

EXPOSE $PORT

 

- 실행

// 이미지 빌드
docker build --build-arg PORT=5656 .

// 컨테이너로 실행
docker run test

: EXPOSE까지 유동적으로 조정가능

: 도커 공식문서에서도 나온 방법

 

- ARG와 ENV의 차이

: ARG는 빌드 타임까지만 유효

: ENV는 빌드 타임 및 런타임까지 유효

: 위와 같은 이유로 docker build 명령에는 env 옵션이 없고 --build-arg 옵션만 있다 (참조: https://docs.docker.com/engine/reference/commandline/build/#build-arg)

 

 

 

 

 

Dockerfile에서 .env 파일을 사용하여 환경변수 정의하기

- docker run --env-file [env 파일 경로]

docker build -t test .

// .env 파일은 다른 이름으로도 가능하다
docker run --env-file ./.env test

 

- docker-compose를 이용하는 방법

: CLI에서 일일이 입력하지 않고도 할 수 있는 방법

: 컨테이너 내부의 환경변수를 초기화 할 수 있으나, EXPOSE와 같이 빌드 타임에 결정되는 것들은 변하지 않는다 (따로 옵션을 넣어서 바꿔줘야함)

 

 

 

 

 

 

Reference

 

docker run

 

docs.docker.com

 

docker build

docker build: The `docker build` command builds Docker images from a Dockerfile and a "context". A build's context is the set of files located in the specified `PATH` or `URL`....

docs.docker.com

 

300x250
728x90