Il existe des services qui sont définis dans docker-compose.yml. Ces services ont été lancés. Je dois reconstruire un seul d'entre eux et le démarrer sans d'autres services. J'exécute les commandes suivantes:
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
À la fin, j'ai obtenu le vieux conteneur nginx. Par ailleurs, docker-compose ne tue pas tous les conteneurs en cours d'exécution!
docker-compose up --build
Réponses:
docker-compose up
la source
docker-compose build service1 service2 --no-cache
fait mieux ce travail ( github.com/docker/compose/issues/1049 ). J'ai eu un problème avec les conteneurs mis en cache qui ont étédocker-compose up -d --no-deps --build <service_name>
docker-compose build --no-cache service1 service2
Avec docker-compose 1.19
up
Sans un ou plusieurs
service_name
arguments, tous les conteneurs seront reconstruitsDepuis le menu d'aide
la source
docker-compose up -d --force-recreate --build container_name
build --no-cache
option, sauf si la description de la commande est complètement fausseCela devrait résoudre votre problème:
la source
stop
etrm
tous les conteneurs, vous pouvez utiliser la commandedocker-compose down
. Votre solution est meilleure si vous voulez seulement vous en débarrasser.docker-compose build <id/name>
avantup
de reconstruire le Dockerfile modifié.Comme l'a signalé @HarlemSquirrel, c'est le meilleur et je pense que la bonne solution.
Mais, pour répondre au problème spécifique de l'OP, cela devrait être quelque chose comme la commande suivante, car il ne veut pas recréer TOUS les services dans le
docker-compose.yml
fichier, mais seulement celui-nginx
ci:Description des options:
la source
Peut-être que ces étapes ne sont pas tout à fait correctes, mais j'aime ceci:
arrêter docker composer:
$ docker-compose down
retirer le récipient:
$ docker system prune -a
démarrer docker composer:
$ docker-compose up -d
la source
Utilisez simplement:
Remplacez
[yml_service_name]
par votre nom de service dans ledocker-compose.yml
fichier. Vous pouvez utiliserdocker-compose restart
pour vous assurer que les modifications sont effectuées. Vous pouvez utiliser--no-cache
pour ignorer le cache.la source
Le problème est:
n'a pas fonctionné (vous avez dit qu'il fonctionne toujours). Si vous allez quand même le reconstruire, vous pouvez essayer de le tuer:
Si cela ne fonctionne toujours pas, essayez de l'arrêter directement avec docker:
ou supprimez-le
Si cela ne fonctionne toujours pas, vérifiez votre version de docker, vous voudrez peut-être mettre à niveau.
Il peut s'agir d'un bug, vous pouvez vérifier si l'un correspond à votre système / version. En voici quelques exemples, par exemple: https://github.com/docker/docker/issues/10589
https://github.com/docker/docker/issues/12738
Comme solution de contournement, vous pouvez essayer de tuer le processus.
la source
Pour moi, il n'a récupéré que les nouvelles dépendances de Docker Hub avec les deux
--no-cache
et--pull
(qui sont disponibles pourdocker-compose build
.la source
Il est essentiel de retirer le récipient avec rm. Sans le retirer, Docker démarrera l'ancien conteneur.
la source
Seulement:
la source