Docker e inicio automatico de contenedores
Cuando implementamos un contendor, queremos usualmente que siga corriendo, a pesar que el usuario se desconecte o que el servidor sea reiniciado.Como mantener el proceso en ejecución tras la desconexión del usuario
Para resolver el primer punto, que siga corriendo cuando el usuario que lo inició se desconecte, debemos iniciar el contenedor como un demonio. Para esto simplemente usamos el parámetro -d.Como mantener el proceso en ejecución tras el reinicio del servidor
En un escenario más complejo, optaremos por automatizar el proceso de los contenedores a través de docker-compose, el cual nos permite incluir un archivo yaml con la configuración deseada, incluyendo imagen, puntos de montaje, puertos, etc.En el mismo archivo yaml, se puede añadir la opción "restart: always", lo que hará que cada vez que se reinicie el servidor (VM), se reinicien automáticamente los contenedores listados con esa opción.
Resumen
En resumen, para iniciar los contenedores, que estos sigan corriendo al desconectarse y que inicien cada vez que el servidor es reiniciado, usaremos el siguiente comando:sudo docker-compose up -d
Archivo YAML ejemplo
Un archivo YAML de ejemplo es el siguiente:Nombre de archivo: docker-compose.yml
Contenido del archivo:
# ###################
version: '1'
services:
postgres:
container_name: postgres
image: postgres
restart: always
nginx:
image: nginx
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx"
depends_on:
- postgres