Was ich tun möchte, ist, meine umgebungsspezifischen Optimierungen in eine override.yml aufzuteilen, nichts Besonderes dort ... meine Überschreibungen werden jedoch für jeden einzelnen bereitgestellten Dienst genau gleich sein und ich möchte vermeiden, dass ich für jeden die gleiche Überschreibung schreiben muss einzelnen Dienst (und fügen Sie der Überschreibung ständig neue Abschnitte hinzu, wenn neue Dienste eingeführt werden).
Stattdessen möchte ich eine Definition erstellen, die besagt "auf diese Überschreibung auf jeden einzelnen Dienst anwenden". Existiert schon ein solches Konzept, das mir vielleicht fehlt?
Beispiel ...
docker-compose.yml:
aservice:
image: whatever1
environment:
FOO: BAR
eine andere docker-compose.yml:
anotherservice:
image: whatever2
meine docker-compose.override.yml:
<magickeyword>:
environment:
FLIBBLE: flobble
dns:
- server1
- server2
Jeder bereitgestellte Dienst hätte nun DNS server1 & server2 und die Umgebungsvariable FLIBBLE.
Mir ist klar, dass ich dies tun könnte, wenn alle Dienste denselben Basisdienst erweitern würden, auf den ich die Überschreibung anwenden könnte, aber gibt es trotzdem eine globale / Standardüberschreibung ohne eine gemeinsame Erweiterung?
Im Moment habe ich einen Hack, der ein generiertes Override-Scannen für alle definierten Dienste beinhaltet und die Override-Datei im Handumdrehen generiert, aber es scheint ein Anwendungsfall zu sein, auf den ich nicht der Erste sein kann, der sich so fragt, ob ich vielleicht haben die offensichtliche Lösung dafür beim Komponieren gerade verpasst.
Sie könnten einfach eine base.yml
Datei in jedem Projektordner mit einem base
Dienst haben, der nur Ihren environment
Schlüssel enthält, und dann jeden Dienst den base
Dienst erweitern lassen.
Dies ist keine gute Lösung mehr, da extends:
in 3.x entfernt wurde https://github.com/moby/moby/issues/31101
@saml check out https://github.com/docker/compose/pull/5140
Hilfreichster Kommentar
@saml check out https://github.com/docker/compose/pull/5140