環境変数を含む Compose アプリケーションの公開
このステップでは、Docker Compose アプリケーションに環境変数を含める方法と、これが公開にどのように影響するかを学びます。環境変数はアプリケーションを設定する一般的な方法であり、Docker Compose はそれらを管理するためのいくつかの方法を提供します。
まず、前のステップで実行中の Nginx コンテナを停止しましょう。まだ~/project
ディレクトリにいない場合は移動します。
cd ~/project
docker-compose down
コマンドを使用して実行中のサービスを停止します。
docker-compose down
次に、docker-compose.yaml
ファイルを修正して環境変数を使用します。web
サービスにシンプルな環境変数を追加します。nano
を使用して~/project
ディレクトリのdocker-compose.yaml
ファイルを開きます。
nano ~/project/docker-compose.yaml
web
サービスの定義にenvironment
セクションを追加します。MY_VARIABLE
という名前の変数と値を追加します。
version: "3.8"
services:
web:
image: nginx@sha256:your_image_digest_here ## 実際のダイジェストに置き換えてください
ports:
- "80:80"
environment:
- MY_VARIABLE=HelloFromCompose
your_image_digest_here
を前のステップで取得した実際のイメージダイジェストに置き換えることを忘れないでください。
Ctrl + S
でファイルを保存し、Ctrl + X
でエディタを終了します。
これで、docker-compose up
でアプリケーションを起動すると、MY_VARIABLE
環境変数が Nginx コンテナ内に設定されます。
docker-compose up -d
コンテナ内に環境変数が設定されていることを確認するために、docker exec
を使用して実行中のコンテナ内でコマンドを実行できます。まず、docker ps
を使用してコンテナ ID を確認します。
docker ps
実行中の Nginx コンテナの Container ID をメモします。次に、docker exec
を使用してコンテナ内でprintenv
コマンドを実行し、MY_VARIABLE
の出力をフィルタリングします。
docker exec < container_id > printenv | grep MY_VARIABLE
<container_id>
を実行中の Nginx コンテナの実際の ID に置き換えてください。MY_VARIABLE=HelloFromCompose
のような出力が表示されるはずです。
環境変数を使用する Compose アプリケーションを公開する場合、これらの変数がターゲット環境でどのように提供されるかを考慮する必要があります。
一般的なアプローチの 1 つは、.env
ファイルを使用することです。Docker Compose は、docker-compose.yaml
ファイルがあるディレクトリで.env
という名前のファイルを自動的に探します。このファイルで環境変数を定義でき、Compose はそれらを読み込みます。
~/project
ディレクトリに.env
ファイルを作成しましょう。
nano ~/project/.env
.env
ファイルに次の内容を追加します:
ANOTHER_VARIABLE=ThisIsFromDotEnv
ファイルを保存し、nano
を終了します。
次に、docker-compose.yaml
ファイルを修正してこの新しい環境変数を使用します。再度docker-compose.yaml
ファイルを開きます。
nano ~/project/docker-compose.yaml
environment
セクションにANOTHER_VARIABLE
を追加します。
version: "3.8"
services:
web:
image: nginx@sha256:your_image_digest_here ## 実際のダイジェストに置き換えてください
ports:
- "80:80"
environment:
- MY_VARIABLE=HelloFromCompose
- ANOTHER_VARIABLE
ANOTHER_VARIABLE
については、変数名だけをリストしていることに注意してください。Compose は、.env
ファイルから読み込まれた変数を含む、docker-compose up
が実行される環境でこの変数を探します。
ファイルを保存し、nano
を終了します。
変更を反映させるために、Compose アプリケーションを停止して再起動します。
docker-compose down
docker-compose up -d
docker ps
を使用して新しいコンテナ ID を取得します。
docker ps
次に、docker exec
を使用してコンテナ内の両方の環境変数を確認します。
docker exec < container_id > printenv | grep MY_VARIABLE
docker exec < container_id > printenv | grep ANOTHER_VARIABLE
<container_id>
を新しい Container ID に置き換えてください。出力にはMY_VARIABLE=HelloFromCompose
とANOTHER_VARIABLE=ThisIsFromDotEnv
の両方が表示されるはずです。
公開時には、通常docker-compose.yaml
ファイルを共有し、必要な環境変数を設定する方法(.env
ファイルを通じて、または Compose が実行される環境で直接設定する)についての指示を提供します。機密情報はdocker-compose.yaml
や.env
ファイルにハードコードせず、シークレット管理ソリューションを使用して管理する必要があります。