Imagina que tus compañeros estan desarrollando algo que finalmente llega a ser un contenedor docker,
le llamaremos docker101tutorial, alojada en tu docker registry privado y quieres tener siempre la última versión desplegada en tu anfitrion Docker, pues, podríamos hacer algo así:

Crea un fichero cron.sh con este contenido:

#!/bin/sh
if grep -Fqe "Image is up to date" << EOF
`docker pull aironman/docker101tutorial:latest`
EOF
then
    echo "no update, just do cleaning"
    docker system prune --force
else
    echo "newest exist, recompose!"
    cd /path/to/your/compose/file
    docker-compose down --volumes
    docker-compose up -d
fi

Déjalo en algún lugar que te mole:

$HOME/.docker/cron.sh

Crea la tarea en cron:

cron -e

Pon algo así:

0 0 8 1/1 * ? * sh $HOME/.docker/cron.sh

Tengo ya memoria de pez para estas cosas, ya que nunca me acuerdo del orden de ese patrón, por lo que al final acabo usando cosas asi para calcular la expresion cron. Esta significa, ejecuta el script cron.sh a las 08:00 cada día.

Ahora puedes pensar que no usas Docker host, que usas ficheros yml en tu kubernetes, openshift, lo que sea,
pues cambias la parte del else para lanzar los comandos kubectl que veas necesarios.

Obviamente, para que esto funcione, los compañeros de desarrollo tienen que subir la versión del contenedor,
creando un nuevo tag. Se ve la idea, no? vamos a ir periódicamente a preguntar al docker registry si hay una nueva versión del contenedor.

Si no lo hay, yo, que soy un poco bestia y estoy con mi portátil hasta arriba de imágenes y contenedores, me estoy cargando en este script TODOS los contenedores e imágenes alojados en mi disco duro!. No lo hagas en el mundo real, simplemente indica que no hay nada que actualizar.

Por Crom!

Deja un comentario