ENVは1行づつ記述すること - Docker
1つのENV内で定義した変数はそのENV内では使えないことがわかった
以下のものはTMPに何も設定されない
# TMPはブランク
ENV USER="tamago324" \
TMP="${USER}"
正しく設定される
# TMPにtamago324が設定される
ENV USER="tamago324"
ENV TMP="${USER}"
1行ずつ書くのが良い
Docker 1.10以降では、イメージのレイヤーが作成されるのは RUN、COPY、ADDの3つのみになっているとのことです
# この書き方が一番いい!! ENV NAME tamago324 ENV OS mac
RUNとCOPYとADDしかレイヤーが作成されないのは気が楽でいいね
ENVをわけない
FROM ubuntu:18.04
ENV USER="tamago324" \
TMP="${USER}"
RUN echo ${TMP}
$ docker build -t test .
Sending build context to Docker daemon 89.09kB
Step 1/3 : FROM ubuntu:18.04
---> cd6d8154f1e1
Step 2/3 : ENV USER="tamago324" TMP="${USER}"
---> Running in eadaba3299d3
Removing intermediate container eadaba3299d3
---> ddb342c89ac5
Step 3/3 : RUN echo ${TMP}
---> Running in df55730ff6c8
Removing intermediate container df55730ff6c8
---> 7f3914e78455
Successfully built 7f3914e78455
Successfully tagged test:latest
Step 3/3 : RUN echo ${TMP}
---> Running in df55730ff6c8
何も表示されない...
ENVを分ける
FROM ubuntu:18.04
ENV USER="tamago324"
ENV TMP="${USER}"
RUN echo ${TMP}
$ docker build -t test . Sending build context to Docker daemon 89.09kB Step 1/4 : FROM ubuntu:18.04 ---> cd6d8154f1e1 Step 2/4 : ENV USER="tamago324" ---> Running in 7869a22a685f Removing intermediate container 7869a22a685f ---> 02b76c851c06 Step 3/4 : ENV TMP="${USER}" ---> Running in 770fcb7d6444 Removing intermediate container 770fcb7d6444 ---> a91b0bf173e4 Step 4/4 : RUN echo ${TMP} ---> Running in f55ddbef02b3 tamago324 Removing intermediate container f55ddbef02b3 ---> 2de05b682fb3 Successfully built 2de05b682fb3 Successfully tagged test:latest
表示されてる!!
Step 4/4 : RUN echo ${TMP}
---> Running in f55ddbef02b3
tamago324