複数の Compose ファイルから構成をマージして出力する
このステップでは、複数の Docker Compose ファイルからの構成をマージし、最終的な結合された構成を出力する方法を学びます。これは、基本構成を定義し、それを追加のファイルで上書きまたは拡張することができる強力な機能であり、異なる環境(開発、ステージング、本番など)を管理するのに役立ちます。
~/project
ディレクトリで作業を続けます。前のステップで docker-compose.yaml
ファイルを作成しました。では、基本構成を拡張するための別の Compose ファイルを作成しましょう。docker-compose.override.yaml
と名付けます。
nano ~/project/docker-compose.override.yaml
次の内容を docker-compose.override.yaml
ファイルに貼り付けます。
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
この上書きファイルは、docker-compose.yaml
で定義された web
サービスを変更します。ホストのポートマッピングを 80 から 8080 に変更し、html
という名前のローカルディレクトリから静的な HTML コンテンツを提供するためのボリュームマウントを追加します。
Ctrl + X
を押し、次に Y
を押し、最後に Enter
を押してファイルを保存します。
では、html
ディレクトリを作成し、その中に簡単な index.html
ファイルを作成しましょう。
mkdir ~/project/html
nano ~/project/html/index.html
次の内容を ~/project/html/index.html
に貼り付けます。
<h1>Hello from Nginx!</h1>
Ctrl + X
を押し、次に Y
を押し、最後に Enter
を押してファイルを保存します。
デフォルトでは、Docker Compose は現在のディレクトリ内の docker-compose.yaml
と docker-compose.override.yaml
を自動的に探してマージします。上書きファイルの構成が優先されます。
マージされた構成を確認するには、~/project
ディレクトリにいることを確認し、再度 docker-compose config
コマンドを実行します。
cd ~/project
docker-compose config
これで、web
サービスがポートマッピング 8080:80
とボリュームマウント ./html:/usr/share/nginx/html
を持つ結合された構成が表示されるはずです。
-f
フラグを使用して、使用する Compose ファイルを明示的に指定することもできます。ファイルを指定する順序は重要で、後のファイルが前のファイルを上書きします。
たとえば、docker-compose.yaml
と docker-compose.override.yaml
を明示的にマージするには、次のコマンドを実行できます。
docker-compose -f docker-compose.yaml -f docker-compose.override.yaml config
この場合、docker-compose.override.yaml
は docker-compose.yaml
の後に自動的に検出されてマージされるため、このコマンドは -f
フラグを使用せずに docker-compose config
を実行した場合と同じマージされた出力を生成します。