DockerfileのENVとARGを使ってみる
Docker docker-compose
Published: 2020-12-21

やったこと

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 で使用した値が参照できないことが確認できました。