docker-compose: opcja automatycznego usuwania kontenera po uruchomieniu w docker-compose.yml

24

docker-compose runOdniesienia wskazuje, że ma --rmopcję

Wyjmij pojemnik po uruchomieniu.

Chcę runustawić to jako domyślne zachowanie dla niektórych usług, które określam docker-compose.yml.

Tak więc pytania są następujące :

  1. Czy można to jakoś określić w docker-compose.yml?
  2. Jeśli to możliwe, jak mogę to zrobić?

( INB4 „Używaj aliasów bash, Luke!” : Oczywiście mogę wymusić to poza docker-compose.ymlustawieniem niektórych aliasów bash, alias docker-compose-run='docker-compose run --rm'ale jestem zainteresowany tym, jak mogę wymusić to dokładnie poprzez docker-compose.yml, a nie w sposób pozaziemski.)

Ivan Kolmychek
źródło

Odpowiedzi:

10

TLDR: Nadal nie jest to możliwe 2018-11 ; użyj docker-compose downlubdocker-compose run --rm

Chcę udzielić zaktualizowanej odpowiedzi na to pytanie, ponieważ jest to prawie 3 lata później. Pozwoli to innym na wyszukiwanie.

Miałem to samo pytanie i oto obejścia, które znalazłem (w tym jedno z samego pytania):

docker-compose down

który wykonuje następujące czynności:

Zatrzymuje kontenery i usuwa kontenery, sieci, woluminy i obrazy utworzone przez up.

Domyślnie usuwane są tylko:

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

Sieci i woluminy zdefiniowane jako zewnętrzne nigdy nie są usuwane.

Chociaż nie możesz tego w docker-compose.ymlnim zadeklarować, to zapewni ci pewne kłopoty; szczególnie w przypadku woluminów i sieci.

docker-compose run --rm

--rm - Usuń pojemnik po uruchomieniu. Ignorowane w trybie odłączonym.

Uruchamia jednorazowe polecenie przeciwko usłudze. Na przykład następujące polecenie uruchamia usługę sieci Web i uruchamia bash jako swoje polecenie.

docker-compose run web bash

[...] polecenie przekazane przez uruchomienie zastępuje polecenie zdefiniowane w konfiguracji usługi .

[...] polecenie nie tworzy żadnego z portów określonych w konfiguracji usługi. Zapobiega to kolizjom portów z już otwartymi portami. Jeśli nie chcesz porty usługa do być tworzone i mapowane do hosta, należy określić --service porty flagę

docker-compose rm -f

-f, --force Nie pytaj o potwierdzenie usunięcia

Pad Moe
źródło
8

To nie jest część specyfikacji Dockerfilelub docker-compose.yml, jest tylko opcją cli dla polecenia uruchomienia, więc odpowiedź brzmi nie. Będziesz musiał polegać na czymś zewnętrznym do egzekwowania.

Jeśli masz jakieś narzędzie do kompilacji dla swojego projektu, zwykle najlepiej jest łączyć z nim zadania komponowania dokerów. Na przykład nasze projekty stopniowe zawierają zadania związane z dokerem, które ustawiają niektóre domyślne opcje, takie jak --rmzadania uruchamiania.

Erik Dannenberg
źródło