dockerfileのenvを使って環境変数を渡す【ARGとの違いも説明する】
dockerfileのenvは環境変数を設定する
dockerfile
で環境変数をコンテナに渡すには、env
を使います。
使い方を紹介します。
この記事を書いた人
@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。
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
関連の記事を書いてます。