通常のプログラムのようにコンテナを使いたい場合,外部からの入力に応じて,その振る舞いを変えたいことがある。 一般に,通常プログラム(プロセスで)を実行するときは,引数を使って外部からの入力を渡すことができる。 では,コンテナ内に収めたプログラムに外部からパラメータを渡すにはどうしたらよいのか。
結論としては,環境変数を設定して渡すのが,この答え(の一つ)のよう。
Dockerfileをこんな感じで書いて
FROM ubuntu:latest CMD echo $ENV1 $ENV2
以下を実行すると、
docker build -t container-name . docker run --rm -t -e ENV1=hello -e ENV2=world container-name
以下の結果が得られる。
hello world
また、環境変数は初期値を設定しておくこともできる。
FROM ubuntu:latest ENV ENV1 hello ENV ENV2 world CMD echo $ENV1 $ENV2
これを実行しなおすと、
docker build -t container-name . docker run --rm -t container-name
同じ結果が得られる。
hello world
docker runはもちろんだが,docker-composeやAzure Container Instancesなどでも環境変数が渡せたので、 ローカル環境なら、docker-compose.ymlに環境変数指定するのが楽かな。