도커 & 쿠버네티스/docker
Dockerfile ENV, ARG 차이
알면 알 수록 재밌다!
2023. 2. 23. 07:00
Docker-compose를 쓸 때와 Dockerfile 1개만 쓸때는 환경 변수 주입이 살짝 다르다.
ENV
- 환경변수 지정
- $변수 혹은 ${변수} 형태로 표현 가능
- 또한, ${변수:-값}으로 값을 기본값으로 표현 가능
- ${변수:+값}의 경우는 반대에 경우인데 사용할 일이 있을까 싶다.
- docker run 시에 --e 옵션을 활용하여 오버라이딩 할 수 있다.
ARG
- build 시점에만 사용되는 변수
- ARG 변수 혹은 ARG 변수=값 형태로 표현 가능
- ENV처럼 ${변수:+값}, ${변수:-값}으로도 표현 가능
- docker build 시에 --build-arg 옵션을 활용하여 오버라이딩 할 수 있다.
위와같이 Docker-compose를 통해서 변수를 주입받을때는 run으로 실행하므로 env를 통해 주입받는 경향이 많다.
하지만, Dockerfile만 쓴다면 Command line으로 환경변수를 주입받아야한다. 그래서 외부의 변수를 쓴다는 ARG를 사용한다.(외부에서 가져와서 써야한다는 뜻)
위와 같이 github action에서 command line으로 변수를 주입받을 수 있다. 물론 env도 run 커맨드 사용시 주입받을 수 있겠지~!