webentwicklung-frage-antwort-db.com.de

docker Compose überschreibt eine Ports-Eigenschaft, anstatt sie zusammenzuführen

Meine Docker-Zusammenstell-Konfigurationen sehen folgendermaßen aus:

docker-compose.yml

version: '3.5'

services:
    nginx:
        ports:
            - 8080:8080

docker-compose.prod.yml

version: '3.5'

services:
    nginx:
        ports:
            - 80:80

Wenn ich nun den Befehl: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up ausführe, stellt der Nginx auf der Hostmaschine zwei Ports bereit: 8000 und 80, da er die Eigenschaften der Ports zusammenführt:

version: '3.5'

services:
    nginx:
        ports:
            - 8080:8080
            - 80:80

Gibt es eine Möglichkeit, es zu überschreiben? Ich möchte nur den Port 80 anzeigen.

9
feerlay

Dieses Verhalten ist dokumentiert unter https://docs.docker.com/compose/extends/#adding-and-overriding-configuration

Bei den Optionen mit mehreren Werten ports, expose, external_links, dns, dns_search und tmpfs werden von Compose beide Wertesätze verkettet

Da ports die Verkettung der Ports in all Ihren compose-Dateien ist, würde ich vorschlagen, eine neue docker-compose.dev.yml-Datei zu erstellen, die Ihre Entwicklungs-Port-Zuordnungen enthält und sie aus der Basis-docker-compose.yml-Datei entfernt.

Wie Nikson sagt, können Sie den Namen docker-compose.override.yml nennen, um Ihre Entwicklungskonfiguration automatisch anzuwenden, ohne die Docker-Compose-Dateien zu verketten. docker-compose.override.yml wird nicht angewendet, wenn Sie manuell eine andere Überschreibungsdatei angeben (z. B. docker-compose -f docker-compose.yml -f docker-compose.prod.yml).

5
Rach Sharp

Verwenden Sie die .override.yml-Datei, um Eigenschaften zu überschreiben und eine klare Trennung der Eigenschaften muss überschrieben werden

docker-compose.override.yml

ex: 

version: '3.5'

services:
    nginx:
        ports:
            - 80:80

Standard: 

docker-compose up

verwendet Ihre docker-compose.yml- und docker-compose.override.yml-Dateien

Referenz: Docker-Compose mehrere Compose

0