run compose docker docker-compose

run - ¿Cómo reconstruir y actualizar un contenedor sin tiempo de inactividad con docker-compose?



docker run (4)

El problema es que el restart reiniciará sus contenedores actuales, que no es lo que quiere.

Como ejemplo, acabo de hacer esto.

  • cambiar el archivo docker para una de las imágenes
  • Llame a docker-compose build para construir las imágenes
  • Call docker-compose down 1 y docker-compose up
    • docker-compose restart NO funcionará aquí
    • el uso de docker-compose start lugar tampoco funciona

Para ser honesto, no estoy completamente seguro de que necesites hacer una down primero, pero eso debería ser fácil de verificar. 1 La conclusión es que necesita llamar. Verá cómo se reinician los contenedores de imágenes sin modificar, pero para la imagen cambiada verá la recreating .

La ventaja de esto con solo llamar up --build es que puede ver el proceso de construcción antes de reiniciar.

1: de los comentarios; no es necesario bajar, solo puede llamar up --build . Down tiene algunos aspectos "down", incluyendo la posibilidad de ser destructivo para sus datos (volumen).

Disfruto mucho usando Docker-Compose.

P.ej. en mi servidor, cuando quiero actualizar mi aplicación con pequeños cambios, solo necesito git pull origin master && docker-compose restart , funciona perfectamente.

Pero a veces, necesito reconstruir (por ejemplo, agregué una dependencia de npm, necesito ejecutar la npm install nuevo).

En este caso, hago un docker-compose build --no-cache && docker-compose restart .

Espero que esto:

  • crear una nueva instancia de mi contenedor
  • detener el contenedor existente (después de que el nuevo haya terminado de construir)
  • empieza el nuevo
  • Opcionalmente, elimine el anterior, pero esto podría hacerse manualmente.

Pero en la práctica parece reiniciar el anterior de nuevo.

¿Es el comportamiento esperado?

¿Cómo puedo manejar una reconstrucción y comenzar una nueva después de que se construye?

Tal vez me perdí un comando específico? ¿O tendría sentido tenerlo?


No gestione su entorno de aplicación directamente. Utilice la herramienta de despliegue como Rancher . Con él, podrá actualizar su aplicación acoplable sin ningún tiempo de inactividad e incluso rebajarla si es necesario.

Ejecutar Rancher es tan fácil como ejecutar otro contenedor de docker, ya que esta herramienta está disponible en Docker Hub .


Use la bandera --build para el comando up , junto con la bandera -d para ejecutar sus contenedores en segundo plano:

docker-compose up -d --build

Esto reconstruirá todas las imágenes definidas en su archivo de redacción, luego reiniciará todos los contenedores cuyas imágenes hayan cambiado.

-d supone que no desea que todo se ejecute en el primer plano de su shell. Esto hace que actúe más como restart , pero no es necesario.


desde el manual docker-componer reinicio

Si realiza cambios en la configuración de docker-compose.yml, estos cambios no se reflejarán después de ejecutar este comando.

deberías poder hacer

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

Los --no-deps no iniciarán los servicios vinculados.