Ich befinde mich in der Situation, dass ich einen Dienst vorübergehend in einer docker-compose
Datei deaktivieren möchte .
Natürlich könnte ich es auskommentieren, aber gibt es eine Möglichkeit, einfach " enabled: false
" zu sagen ?
docker
docker-compose
Mandragor
quelle
quelle
docker-compose up
, werden standardmäßig alle Dienste gestartet. Wenn Sie es jedoch ausführendocker-compose up myservice
, wird myservice und Dinge, die davon abhängen, gestartet. Durch Einrichten der Abhängigkeiten können Sie festlegen, dass der fehlerhafte Dienst nicht mit diesem Befehl beginnt. Sie können auchdocker-compose run
nur die gewünschten Dienste in Anspruch nehmen. Die richtige Wahl kann auch darin bestehen, diese in mehrere Erstellungsdateien aufzuteilen, um Ihnen die Flexibilität zu ermöglichen, die Sie benötigen.--no-deps
falls Sie die Abhängigkeiten nicht starten möchten. Ich weiß, es ist nicht das, wonach Sie suchen, aber es ist umgekehrt.docker-compose -f docker-compose.yml -f another-docker-compose.yml up -d
. Sie können die resultierende Zusammenstellung der Docker-Komposition mit dem Befehl config überprüfen :docker-compose -f docker-compose.yml -f another-docker-compose.yml config
Antworten:
Sie können einfach das
entrypoint
odercommand
neu definieren , um den Befehl durch etwas zu ersetzen, das nichts bewirkt (/bin/true
)Das würde den Container sofort verlassen und nichts tun.
Shadi fügt die folgenden Tipps in den Kommentaren hinzu:
5andr0 weist in den Kommentaren auf den Abschnitt
x-disabled:
der obersten Ebene hin (eine feldähnliche Erweiterung)quelle
restart: "no"
, um unendliche Neustarts zu vermeidenx-disabled:
anstelle vonservices:
Sie können es in einer
docker-compose.override.yaml
Datei tun .Diese Datei wird automatisch von gelesen
docker-compose
und in die Hauptdatei eingefügtdocker-compose.yaml
.Wenn Sie es von Git ausgeschlossen haben, kann jeder Entwickler die Konfiguration (mit einigen Einschränkungen) optimieren, ohne das Original zu ändern
docker-compose.yaml
.Daher kann der Dienst
foo
ad-hoc deaktiviert werden, indem sein Einstiegspunkt neu definiert wird indocker-compose.override.yaml
:quelle
export XXX_ENTRYPOINT=/bin/true
dann `entrypoint: [" $ {XXX_ENTRYPOINT: -docker-entrypoint.sh} "]`Ich füge dem Dienst, den ich vorübergehend deaktivieren möchte, die folgende zusätzliche Zeile hinzu:
Es fängt trotzdem an, macht aber nichts.
quelle
command
hat keine Auswirkungen auf den Einstiegspunkt. In Ihrem Beispiel verlassen Sie sich darauf, dass dasentrypoint
ist,bash
denke ich. Um dies belastbar zu machen ((unabhängig vom eingebautenentrypoint
)), müssen Sie den Einstiegspunkt und nicht den Befehl neu definieren.Es gibt keine Möglichkeit, einen in Docker compose yaml file definierten Dienst zu deaktivieren. Der Vorschlag von VonC ist eine gute Problemumgehung. Die verfügbaren Optionen finden Sie unten in der Dokumentation zum Erstellen von Docker. Https://docs.docker.com/compose/compose-file/
quelle
Ich würde den Dienst auf 0 Replikate skalieren mit: deploy: replicas: 0
Leider funktioniert dies, wie in der Dokumentation angegeben, nur mit Docker-Schwarm.
quelle
Ich hab es geschafft:
quelle
Primitiv, aber fügen Sie
#
am Anfang jeder Zeile des Dienstes ein hinzu.quelle