Hay un alcance de servicios que se define en docker-compose.yml. Estos servicios se han iniciado. Necesito reconstruir solo uno de estos y comenzarlo sin otros servicios. Ejecuto los siguientes comandos:
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
Al final obtuve el viejo contenedor nginx. Por cierto, docker-compose no mata todos los contenedores en ejecución.
docker-compose up --build
Respuestas:
docker-componer
fuente
docker-compose build service1 service2 --no-cache
funciona mejor ( github.com/docker/compose/issues/1049 ). Tuve un problema con los contenedores en caché que se construyeron antes de usarlosdocker-compose up -d --no-deps --build <service_name>
docker-compose build --no-cache service1 service2
Con docker-compose 1.19
up
Sin uno o más
service_name
argumentos, todos los contenedores serán reconstruidosDesde el menú de ayuda
fuente
docker-compose up -d --force-recreate --build container_name
build --no-cache
opción, a menos que la descripción del comando sea completamente incorrectaEsto debería solucionar su problema:
fuente
stop
yrm
todos los contenedores, entonces puedes usar el comandodocker-compose down
. Su solución es mejor si solo quiere deshacerse de algunos.docker-compose build <id/name>
antesup
para reconstruir el Dockerfile modificado.Como publicó @HarlemSquirrel, es la mejor y creo que la solución correcta.
Pero, para responder al problema específico de OP, debería ser algo como el siguiente comando, ya que no quiere recrear TODOS los servicios en el
docker-compose.yml
archivo, sino solo elnginx
uno:Descripción de las opciones:
fuente
Tal vez estos pasos no sean del todo correctos, pero me gusta esto:
detener docker componer:
$ docker-compose down
retire el contenedor:
$ docker system prune -a
iniciar docker componer:
$ docker-compose up -d
fuente
Simplemente use:
Reemplace
[yml_service_name]
con su nombre de servicio en eldocker-compose.yml
archivo. Puede usardocker-compose restart
para asegurarse de que se realicen los cambios. Puedes usar--no-cache
para ignorar el caché.fuente
El problema es:
no funcionó (dijiste que todavía se está ejecutando). Si vas a reconstruirlo de todos modos, puedes intentar matarlo:
Si aún no funciona, intente detenerlo directamente con Docker:
o eliminarlo
Si eso todavía no funciona, verifique su versión de Docker, es posible que desee actualizar.
Puede ser un error, puede verificar si uno coincide con su sistema / versión. Aquí hay una pareja, por ejemplo: https://github.com/docker/docker/issues/10589
https://github.com/docker/docker/issues/12738
Como solución alternativa, podría intentar matar el proceso.
fuente
Para mí, solo obtuvo nuevas dependencias de Docker Hub con ambos
--no-cache
y--pull
(que están disponibles paradocker-compose build
.fuente
Retirar el recipiente con rm es esencial. Sin quitar, Docker iniciará el contenedor viejo.
fuente
Solamente:
fuente