Docker のコンテナに環境変数を渡す
-
-e
および-env
タグを使用して、Docker のコンテナに環境変数を渡する - Docker でコンテナに環境変数を渡すには Export コマンドを使用する
-
Docker でコンテナに環境変数を渡すには
-env
ファイルを使用する
このチュートリアルでは、Docker のコンテナーに環境変数を渡す方法を紹介します。
-e
および -env
タグを使用して、Docker のコンテナに環境変数を渡する
まず、環境変数を作成してコンテナに渡す方法を見ていきます。以下のコマンドを使用して、Docker レジストリから使用するイメージをプルすることから始めます。
$ docker pull ubuntu~$ docker pull ubuntu
出力:
Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
-env
の省略形である -e
タグを使用します。このタグの使用法は、ターミナルでコマンド docker run -help
を実行することで確認できます。この引数により、コンテナに渡す環境変数の複数のキーと値のペアを作成できます。
単一の環境変数を作成し、Ubuntu イメージを使用して作成したコンテナーに渡す方法は次のとおりです。
$ docker run -it -e DEMO=sample_variable ubuntu bash
出力:
root@3a20bc21d3c8:/# echo $DEMO
sample_variable
以下に示すように、-e
の複数のタグを使用して、新しいコンテナを作成するときに実行コマンドと一緒にそれらをチェーンするだけで、環境変数を作成することもできます。
$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash
これらの 2つの環境変数を渡したら、以下のコマンドを使用してそれらの値にアクセスできます。変数 1 に DEMO1
という名前を付けました。以下でその値にアクセスできます。
root@9eee00d7ab01:/# echo $DEMO1
出力:
sample_variable1
同様に、ここに示すように、変数 2 を出力することもできます。
root@9eee00d7ab01:/# echo $DEMO2
出力:
sample_variable2
Docker でコンテナに環境変数を渡すには Export コマンドを使用する
または、export コマンドを使用して、環境変数の連鎖を回避することもできます。このコマンドは、WSL でも使用できる Linuxbash シェル用の組み込みユーティリティツールです。
これにより、既存の変数に影響を与えることなく、環境変数を作成して子プロセスに渡すことができます。以下に示すように、環境変数を作成することから始めます。
isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword
環境変数を作成したら、次に示すように、作成中のコンテナーにそれらを渡すことができます。
$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash
次に、以下に示すように、コマンド echo コマンドを使用して、変数のそれぞれの値にアクセスして表示できます。
root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi
Docker でコンテナに環境変数を渡すには -env
ファイルを使用する
デバッグの余地を増やすためのより良いアプローチは、代わりに Docker 分解ファイルを使用することです。これは、Docker コンテナを起動するときに環境変数を直接渡す必要がないことを意味します。
この方法は、環境変数を含む外部の .env
ファイルを作成する必要があることを意味します。以下の Linux コマンドを使用して、このファイルをホームディレクトリに作成できます。
このコマンドは Linuxvi エディターをオプトインし、環境変数リストを作成します。
$ vi env.list
vi エディター内で、大文字のキーと小さなケースのそれぞれの値を使用して、キーと値のペアとして環境変数を作成します。コロン全体を押して wq コマンド
を入力することにより、変数を保存して終了します。
MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword
wq
ls
コマンドを使用して、ファイル env.list
が正常に保存されたことを確認できます。これにより、そのディレクトリ内のファイルのリストが返され、リストされているファイルの中に env.list
が含まれます。
以下に示すように、cat
コマンドを使用して、そのリストのエントリを表示することもできます。
$ cat env.list
出力:
MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword
これが整ったら、ubuntu イメージを実行して新しいコンテナーを作成し、変数を格納した場所へのパスを指定してそれらを渡すことができます。
この例では、env.list
ファイルがホームディレクトリに保存されています。したがって、別のディレクトリ内にある場合は、パスが異なって見える可能性があります。
コマンドを実行して、これらの環境変数を新しいコンテナーに渡す必要があります。
$ docker run -it --env-file ./env.list ubuntu bash
以下に示すように変数を出力することで、環境変数がコンテナーに正常に渡されたことを確認できます。
/# echo $MYSQL_USER
/# echo $MYSQL_PASS
出力:
Isaactonyloi
fakepassword
以前の方法の代わりに、渡したいすべての環境変数を含むテンプレートファイルを作成できます。これにより、変更を加えたい場合に、このファイルで作成された環境変数を簡単にオーバーライドできます。
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn