Ejecutar cualquier docker-compose como servicio

Índice de contenidos

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Slimbook Pro 13.3″ (Intel Core i7, 32GB RAM)
  • Sistema Operativo: LUbuntu 16.04
  • LXD 2.21
  • Docker Compose 1.19.0
  • Docker 17.12.1-ce

2. Introducción

En este tutorial vamos a ver cómo de una forma muy sencilla podemos configurar servicios de systemd de cualquier docker-compose que queramos y de una forma completamente genérica.

3. Vamos al lío

Lo primero que tenemos que hacer es crear el fichero “/etc/systemd/system/docker-compose@.service” con el siguiente contenido:

Esta es la configuración que habría que hacer para cada uno de los docker-compose que quisiéramos definir como servicio de la máquina. La gracia aquí es que hemos creado un servicio genérico, donde solo tenemos que tener en cuenta el situar nuestro fichero docker-compose.yml dentro de un directorio que cuelgue de “/etc/docker/compose”.

Por ejemplo, si queremos utilizar docker-compose para levantar todos los contenedores necesarios para manejar selenium grid, lo primero que tenemos que hacer es crear el fichero /etc/docker/compose/selenium-grid/docker-compose.yml con el siguiente contenido.

Nota: Para este tutorial el contenido del fichero es irrelevante, lo que importa es ver cómo crear un servicio para que estos contenedores se ejecuten en el arranque.

Ahora si queremos arrancar o parar los contenedores manejados por este docker-compose simplemente tenemos que ejecutar:

Una vez hemos comprobado que ambos comandos se ejecutan correctamente. Simplemente tenemos que ejecutar este otro comando para establecer que el servicio se ejecute en el arranque de la máquina.

Nota: fíjate que lo que va a continuación de la @ tiene que coincidir exactamente con el nombre del directorio.

4. Conclusiones

Como ves, de una forma genérica y sencilla ya podemos ejecutar cualquier docker-compose como servicio de la máquina con la ventaja de poder ejecutarse en el arranque de la máquina.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.