whats start run hub compose docker docker-compose docker-container

start - ¿Cómo reconstruir el contenedor docker en docker-compose.yml?



manual docker compose (7)

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 archivo docker-compose.yml , sino solo el nginx :

docker-compose up -d --force-recreate --no-deps --build nginx

Descripción de las opciones:

Options: -d Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit. --force-recreate Recreate containers even if their configuration and image haven''t changed. --build Build images before starting containers. --no-deps Don''t start linked services.

Hay un alcance de servicios que se define en docker-compose.yml. Estos servicios se han iniciado. Necesito reconstruir solo uno de estos e iniciarlo 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.


Con docker-compose 1.19

docker-compose up -d --force-recreate --build

Desde el menú de ayuda

Options: -d Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit. --force-recreate Recreate containers even if their configuration and image haven''t changed. --build Build images before starting containers.


El problema es:

$ docker-compose stop nginx

no funcionó (dijiste que todavía se está ejecutando). Si vas a reconstruirlo de todos modos, puedes intentar matarlo:

$ docker-compose kill nginx

Si aún no funciona, intente detenerlo directamente con Docker:

$ docker stop nginx

o eliminarlo

$ docker rm -f nginx

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.

$ ps aux | grep docker $ kill 225654 # example process id


Esto debería solucionar su problema:

docker-compose ps # lists all services (id, name) docker-compose stop <id/name> #this will stop only the selected container docker-compose rm <id/name> # this will remove the docker container permanently docker-compose up # builds/rebuilds all not already built container


Simplemente use:

docker-compose build [yml_service_name]

Reemplace [yml_service_name] con su nombre de servicio en el archivo docker-compose.yml . Puede usar el docker-compose restart para asegurarse de que se realicen los cambios. Puede usar --no-cache para ignorar el caché.


Solamente:

$ docker-compose restart [yml_service_name]


docker-componer

$docker-compose up -d --no-deps --build <service_name>

--no-deps - No inicie servicios vinculados.

--build - Construye imágenes antes de iniciar contenedores.