dockerfileのenvは環境変数を設定する
dockerfileで環境変数をコンテナに渡すには、envを使います。
使い方を紹介します。
envの使い方
1. dockerfileを作る
dockerfileの書き方です。
FROM centos
ENV SITE_DOMAIN "example.com"
これで、出来上がったイメージの内で環境変数SITE_DOMAINの中にexample.comが入ります。
2. dockerfileをビルドする
dockerfileをビルドするコマンド。
docker build -t centos-custom:0.1 .
これで出来上がったイメージの中に環境変数が埋め込まれました。
-eを使ってrunの時初期値から変える
dockerfileで設定した値から変えたい時は、-eで渡すことができる。
docker container run \
-d \
-e SITE_DOMAIN="example.net" centos-custom:0.1
上の例だとdockerfileではexample.comだったSITE_DOMAINがexample.netに変わっている。
dockerfileのenvでpath環境変数を設定する
dockerfileのenvではPATH環境変数を設定することもができます。
新しいソフトウェアを簡単に実行するため、コンテナにインストールされているソフトウェアの PATH 環境変数を ENV を使って更新できます。
ENV | Dockerfile のベストプラクティス | Docker-docs-ja
例えば下のコードでnginxにPATHを通すことができます。
ENV PATH /usr/local/nginx/bin:$PATH
dockerfileのenvをファイルで設定できる?
出来ないようです。
docker composeであれば.envファイルや--env-fileを使うことで、環境変数の値を別ファイルにまとめることができます。
ですが、dockerfileでは出来ないみたいです。
ARGとの違い
- ENVはdockerfileから生成されたコンテナ内に環境変数を埋め込むことができます
- ARGはdockerfile内で使える変数を設定することができます
似ているようで全然違いますね。
さいごに
他にもdockerfile関連の記事を書いてます。









を使ったテストを作る,co_rgb:fff,w_620,c_fit/w_300/ogp_image_zorhlz.png)
