¿Cómo actualizar imágenes existentes con Docker-Compose?
Tengo varios microservicios y estoy usando Docker-compose para implementaciones de desarrollo. Cuando hay algunos cambios en la base del código de microservicios, activo ci job para volver a implementarlos. Tengo el siguiente script para hacer esto. Pero cada vez tengo que crear todas las imágenes desde cero y luego ejecutarlas. Después de toda esta operación, tengo anonymous
imágenes. Entonces estoy usando el último script para eliminarlos. ¿Qué sugerirías para hacer más práctico este proceso? ¿Hay alguna forma de actualizar una imagen existente sin eliminarla con nuevos cambios?
- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f
Información adicional: estoy usandogitlab-ci
Los contenedores Docker están diseñados para ser efímeros. Para actualizar un contenedor existente, elimina el antiguo y comienza uno nuevo. Por tanto el proceso que estás siguiendo es el correcto.
Puede simplificar los comandos a los siguientes:
docker-compose pull
docker-compose up --force-recreate --build -d
docker image prune -f
Puedes actualizarlo usando:
docker-compose pull
Ahora tu imagen está actualizada. Si tiene la versión anterior del contenedor ejecutándose, debe reiniciarlo para usar la imagen actualizada:
docker-compose up --detach
up
El comando recrea automáticamente el contenedor en caso de cambio de imagen o configuración.
Prefiero asegurarme de que todas las imágenes se descarguen antes de actualizar los contenedores con las nuevas imágenes para minimizar el tiempo en un estado intermedio o, peor aún, en el medio en caso de que falle la descarga de una imagen.
Saco las últimas imágenes:
docker compose pull
Luego reinicio los contenedores:
docker compose up -d --remove-orphans
Opcionalmente, elimino imágenes obsoletas:
docker image prune
docker-compose pull
entonces
docker-compose up -d
no necesita el comando "down" "docker-compose up -d" solo recreará uno modificado