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 ydocker-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.