私のドッカーの構成設定は次のようになります:
docker-compose.yml
version: '3.5'
services:
nginx:
ports:
- 8080:8080
docker-compose.prod.yml
version: '3.5'
services:
nginx:
ports:
- 80:80
今、私がコマンドを実行すると:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
nginxはホストマシンに2つのポートを公開します:8000
および80
、portsプロパティをマージするため:
version: '3.5'
services:
nginx:
ports:
- 8080:8080
- 80:80
それを上書きする方法はありますか?ポートのみを公開したい80
この動作は https://docs.docker.com/compose/extends/#adding-and-overriding-configuration に記載されています。
複数値オプション
ports
、expose
、external_links
、dns
、dns_search
、およびtmpfs
の場合、Composeは両方を連結します値のセット
ports
はすべての構成ファイルのポートを連結したものになるため、開発ポートマッピングを含む新しいdocker-compose.dev.yml
ファイルを作成し、ベースから削除することをお勧めしますdocker-compose.yml
ファイル。
Niksonが言うように、これにdocker-compose.override.yml
という名前を付けると、docker-composeファイルをチェーンせずに開発構成を自動的に適用できます。別のオーバーライドファイルを手動で指定した場合、docker-compose.override.yml
は適用されません(例:docker-compose -f docker-compose.yml -f docker-compose.prod.yml
)
使用する .override.yml
プロパティをオーバーライドするためのファイルとプロパティの明確な分離をオーバーライドする必要があります
docker-compose.override.yml
例:
version: '3.5'
services:
nginx:
ports:
- 80:80
デフォルト:
docker-compose up
docker-compose.yml
およびdocker-compose.override.yml
ファイル
リファレンス: docker-compose multiple compose