Docker image 與 container 的建構流程
其實這張圖已經解說很清楚了
ARG
這裡有個 Dockerfile 範例如下 :
|
|
- VERSION 設定預設值
latest
- 若在 FROM 執行之後,還要使用剛剛 ARG
VERSION
變數的話,則還需要再宣告一次
,否則會找不到ARG變數
When building a docker image, you can overwrite ARG
by using -–build-arg
:
|
|
In docker-compose.yml
file, it will look like :
|
|
ENV
When running a dokcer container, you can overwrite ENV
by using -e
:
|
|
In Dockerfile, it will look like :
|
|
In docker-compose.yml file, it will look like :
|
|
Additionally, you can also use env-file
to set massive envs :
demo_env.env
|
|
|
|
|
|
當一起混合使用會發生什麼事 ?
舉一個例子
|
|
Building image…
|
|
case 1
|
|
列出環境變數,可透過 ENV 指定 VAR1 ,但 ARG 是不行的
case 2
|
|
在 Build image 階段,已經將
ARG
的值填入/tmp/demo
,所以才會印出 Hello world
Conclusion
See different ?
- We use
ARG
in building images stage - We use
ENV
in runngin containers stage
That’s it !