Istnieje zakres usług zdefiniowanych w docker-compose.yml. Te usługi zostały uruchomione. Muszę odbudować tylko jeden z nich i uruchomić go bez dodatkowych usług. Uruchamiam następujące polecenia:
docker-compose up -d # run all services
docker-compose stop nginx # stop only one. but it still running !!!
docker-compose build --no-cache nginx
docker-compose up -d --no-deps # link nginx to other services
Na koniec mam stary pojemnik nginx. Nawiasem mówiąc, komponowanie dokerów nie zabija wszystkich działających kontenerów!
docker-compose up --build
Odpowiedzi:
dokowanie-skomponuj
źródło
docker-compose build service1 service2 --no-cache
wykonuje tę pracę lepiej ( github.com/docker/compose/issues/1049 ). Miałem problem z buforowanymi kontenerami, które zostały zbudowane przed użyciemdocker-compose up -d --no-deps --build <service_name>
docker-compose build --no-cache service1 service2
Z docker-compose 1.19
up
Bez jednego lub większej liczby
service_name
argumentów wszystkie kontenery zostaną odbudowaneZ menu pomocy
źródło
docker-compose up -d --force-recreate --build container_name
build --no-cache
opcją, chyba że opis polecenia jest całkowicie niepoprawnyTo powinno rozwiązać twój problem:
źródło
stop
irm
wszystkie kontenery, możesz użyć poleceniadocker-compose down
. Twoje rozwiązanie jest lepsze, jeśli chcesz się go tylko pozbyć.docker-compose build <id/name>
wcześniej,up
aby odbudować zmieniony plik Docker.Jak napisał @HarlemSquirrel, jest to najlepsze i myślę, że właściwe rozwiązanie.
Ale, aby odpowiedzieć na konkretny problem PO, powinno to być coś w rodzaju następującego polecenia, ponieważ nie chce ponownie tworzyć WSZYSTKICH usług w
docker-compose.yml
pliku, ale tylkonginx
jedną:Opis opcji:
źródło
Może te kroki nie są całkiem poprawne, ale podoba mi się to:
zatrzymaj tworzenie dokera:
$ docker-compose down
usuń pojemnik:
$ docker system prune -a
rozpocznij tworzenie dokera:
$ docker-compose up -d
źródło
Po prostu użyj:
Zastąp
[yml_service_name]
swoją nazwą usługi wdocker-compose.yml
pliku. Możesz użyć,docker-compose restart
aby upewnić się, że zmiany zostaną wprowadzone. Możesz użyć,--no-cache
aby zignorować pamięć podręczną.źródło
Problemem jest:
nie działa (mówiłeś, że nadal działa). Jeśli mimo to zamierzasz go odbudować, możesz spróbować go zabić:
Jeśli nadal nie działa, spróbuj zatrzymać go bezpośrednio za pomocą okna dokowanego:
lub usuń to
Jeśli to nadal nie działa, sprawdź swoją wersję dokera, może być konieczne uaktualnienie.
Może to być błąd, możesz sprawdzić, czy pasuje do twojego systemu / wersji. Oto kilka, na przykład: https://github.com/docker/docker/issues/10589
https://github.com/docker/docker/issues/12738
Aby obejść ten problem, możesz spróbować zabić proces.
źródło
Dla mnie pobrałem tylko nowe zależności z Docker Hub z obydwoma
--no-cache
i--pull
(które są dostępne dladocker-compose build
.źródło
Niezbędne jest usunięcie pojemnika za pomocą rm. Bez usuwania Docker uruchomi stary pojemnik.
źródło
Tylko:
źródło