Znajduję się w sytuacji, w której chcę tymczasowo wyłączyć usługę w pliku docker-compose
pliku.
Oczywiście mógłbym to skomentować, ale czy jest jakaś opcja, aby po prostu powiedzieć „ enabled: false
”?
docker
docker-compose
Mandragor
źródło
źródło
docker-compose up
, domyślnie uruchomi wszystkie usługi. Jeśli jednak uruchomiszdocker-compose up myservice
, uruchomi się moja usługa i rzeczy od niej zależne. Konfigurując zależności, możesz sprawić, że zła usługa nie rozpocznie się od tego polecenia. Możesz takżedocker-compose run
skorzystać z usług, które chcesz. Właściwym wyborem może być również podzielenie tego na wiele plików redagowania, aby zapewnić potrzebną elastyczność.--no-deps
na wypadek, gdybyś nie chciał uruchamiać zależności. Wiem, że to nie jest to, czego szukasz, ale jest na odwrót.docker-compose -f docker-compose.yml -f another-docker-compose.yml up -d
. Możesz sprawdzić wynikowe połączenie Docker Compose za pomocą polecenia config :docker-compose -f docker-compose.yml -f another-docker-compose.yml config
Odpowiedzi:
Możesz po prostu przedefiniować
entrypoint
lubcommand
, aby zastąpić to polecenie czymś, co nic nie robi (/bin/true
)To spowodowałoby natychmiastowe opuszczenie kontenera, nic nie robiąc.
shadi dodaje w komentarzach następujące wskazówki:
5andr0 zwraca uwagę w komentarzach do sekcji najwyższego poziomu
x-disabled:
(pole-jak rozszerzenie)źródło
restart: "no"
aby uniknąć nieskończonychx-disabled:
zamiastservices:
Możesz to zrobić w
docker-compose.override.yaml
pliku.Ten plik jest automatycznie odczytywany
docker-compose
i scalany z plikiem głównymdocker-compose.yaml
.Jeśli masz go wykluczone z Git, każdy programista może dostosować konfigurację (z kilkoma ograniczeniami) bez zmiany oryginału
docker-compose.yaml
.Tak więc usługę
foo
można wyłączyć ad hoc, ponownie definiując jej punkt wejścia wdocker-compose.override.yaml
:źródło
export XXX_ENTRYPOINT=/bin/true
then `entrypoint: [" $ {XXX_ENTRYPOINT: -docker-entrypoint.sh} "]`Dodaję następującą dodatkową linię do usługi, którą chcę tymczasowo wyłączyć:
Zaczyna się i tak, ale nic nie robi.
źródło
command
nie ma wpływu na punkt wejścia. W swoim przykładzie polegasz na tym, że takentrypoint
jestbash
. Aby uczynić to elastycznym ((niezależnie od wbudowanegoentrypoint
), myślę, że musisz przedefiniować punkt wejścia, a nie polecenie.Nie ma możliwości wyłączenia usługi zdefiniowanej w pliku YAML Compose Docker. Sugestia VonC to dobre obejście. Zobacz poniżej dokumentację docker compose dla dostępnych opcji https://docs.docker.com/compose/compose-file/
źródło
Skalowałbym usługę do replik 0 z: deploy: replicas: 0
Niestety, jak stwierdza dokumentacja, działa to tylko z rojem dokerów.
źródło
Mam to:
źródło
Prymityw, ale dodaj
#
na początku każdego wiersza usługi.źródło