web-dev-qa-db-ja.com

docker composeは、portsプロパティをマージする代わりにオーバーライドします

私のドッカーの構成設定は次のようになります:

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

17
feerlay

この動作は https://docs.docker.com/compose/extends/#adding-and-overriding-configuration に記載されています。

複数値オプションportsexposeexternal_linksdnsdns_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

13
Rach Sharp

使用する .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

0