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
300x250
728x90
'Container > Docker' 카테고리의 다른 글
/var/lib/docker/overlay2 가 용량을 많이 차지할때 (0) | 2023.08.25 |
---|---|
도커 컨테이너 이미지 빌드 시 --build-args 를 .env 파일로 부터 읽어오기 (0) | 2023.08.25 |
도커 파일 (DockerFile) 완전히 파헤치기 (0) | 2023.07.25 |
컨테이너와 도커에 대해 깊이 파헤쳐보자 (0) | 2023.06.22 |
failed to solve with frontend dockerfile.v0 failed to read dockerfile (0) | 2022.07.20 |