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”?
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”?
--no-depsna 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ć entrypointlubcommand , 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:
Jeśli nie chcesz, aby usługa w ogóle była budowana, przedefiniuj klucz kompilacji, tak aby wskazywał
Dockerfiletylko na:
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0 zwraca uwagę w komentarzach do sekcji najwyższego poziomux-disabled: (pole-jak rozszerzenie)
O wiele wygodniejsze: przenoszenie wyłączonych usług do sekcji najwyższego poziomu
x-disabled:zamiastservices:Sekcje z
x-prefiksem zostaną przeanalizowane, ale zignorowane, jeśli nie zostaną użyte w zamierzony sposób jako pole rozszerzenia.
restart: "no"aby uniknąć nieskończonych
x-disabled:zamiastservices:
Możesz to zrobić w docker-compose.override.yamlpliku.
Ten plik jest automatycznie odczytywany docker-composei scalany z plikiem głównym docker-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ę foomożna wyłączyć ad hoc, ponownie definiując jej punkt wejścia w docker-compose.override.yaml:
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
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ć:
command: echo "{put your service name here} disabled"
Zaczyna się i tak, ale nic nie robi.
commandnie ma wpływu na punkt wejścia. W swoim przykładzie polegasz na tym, że tak entrypointjest bash. Aby uczynić to elastycznym ((niezależnie od wbudowanego entrypoint), 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/
Skalowałbym usługę do replik 0 z: deploy: replicas: 0
Niestety, jak stwierdza dokumentacja, działa to tylko z rojem dokerów.
Mam to:
docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')
Prymityw, ale dodaj #na początku każdego wiersza usługi.
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 runskorzystać 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ść.