[Docker] ARG 와 ENV 사용 예제.
Cloud&Container/IaC 2021. 2. 1. 14:55
https://docs.docker.com/engine/reference/builder/#arg
https://docs.docker.com/engine/reference/builder/#env
https://docs.docker.com/compose/reference/build/
https://docs.docker.com/compose/environment-variables/
docker build 시 --builg-arg 를 사용 할 때가 있는데요.
arg 와 env 에 대한 차이를 이해 하고 사용 하면 좋을 것 같아 기록해 봅니다.
제가 하고 싶었던 건 아래와 같습니다.
파일 구조)
ㄴ .env
ㄴ docker-compose.yml
ㄴ Dockerfile
$ docker build --build-arg BASTION_IP=xxx.xxx.xxx.xxx --tag ecos-installer-web:0.0.1 .
여기서 --build-arg 를 사용하지 않고 build 를 하고 싶었습니다.
그래서 .env 를 구성 하고
docker-compose 를 이용해서 build 를 하는 방식으로 변경을 했습니다.
.env 에 BASTION_IP 추가)
BASTION_IP=xxx.xxx.xxx.xxx
Dockerfile 에 ARG 추가)
ARG BASTION_IP
...중략...
ENV configTerraformAwsBastionIp $BASTION_IP
docker-compose.yml 에 build 추가)
build:
context: .
args:
- BASTION_IP=${BASTION_IP}
이렇게 변경 하고 docker build 를 하지 않고 docker-compose build 로 처리 했습니다.
$ docker-compose build or docker-compose up