やったこと
Dockerfile の ENV と ARG を使ってみます。
確認環境
$ docker --version
Docker version 19.03.13, build 4484c46d9d
$ docker-compose --version
docker-compose version 1.27.4, build 40524192
調査
docker-compose.yml
version: '3'
services:
db-master:
build:
context: .
args:
hoge: 'my_arg'
Dockerfile
FROM mysql:5.6
ARG hoge
ENV MY_ENV my_envvv
RUN echo $hoge
RUN echo ${hoge}
RUN echo $MY_ENV
build します
$ docker-compose build
Building db-master
Step 1/6 : FROM mysql:5.6
---> e1b3da40572b
Step 2/6 : ARG hoge
---> Using cache
---> 1e88cd11277d
Step 3/6 : ENV MY_ENV my_envvv
---> Running in d4f0b0db64b1
Removing intermediate container d4f0b0db64b1
---> 2ba1cbf3fbb9
Step 4/6 : RUN echo $hoge
---> Running in ea3b888d7a9c
my_arg
Removing intermediate container ea3b888d7a9c
---> 76be4c3cb1c7
Step 5/6 : RUN echo ${hoge}
---> Running in 948c8bf0e3f7
my_arg
Removing intermediate container 948c8bf0e3f7
---> e883a7d8399a
Step 6/6 : RUN echo $MY_ENV
---> Running in 77f146eb50ab
my_envvv
Removing intermediate container 77f146eb50ab
---> bcc7d7b8df2e
Successfully built bcc7d7b8df2e
Successfully tagged mysql_db-master:latest
コンテナに入って、ARG、ENV で指定した値が読み出せるか見てみます。
$ docker-compose up -d
WARNING: Found orphan containers (mysql_db-slave_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Recreating mysql_db-master_1 ... done
// コンテナに入ります
$ docker-compose exec db-master bash
root@e935de35c503:/#
root@e935de35c503:/#
root@e935de35c503:/# echo $MY_ENV
my_envvv
root@e935de35c503:/# echo $hoge
コンテナ起動時には、ARG で使用した値が参照できないことが確認できました。