Docker compose, es la herramienta de docker que nos simplifica la vida para desplegar stacks. Podemos definir mediante ficheros yaml, la estructura de docker que queremos desplegar y una vez hecho esto ejecutarlo. El concepto es parecido a un dockerfile pero orientado a stacks en vez de a imágenes. Con esto podemos crear una infraestructura de docker muy fácilmente en cosa de segundos. Además, podemos luego controlar todo el stack con esta herramienta.
Instalación
Descargar docker compose
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
Dar permisos de ejecución
chmod +x /usr/local/bin/docker-compose
Primeros pasos
Para hacer el ejemplo de un docker compose, vamos a desplegar un zabbix.
Lo primero que hay que hacer es crear una carpeta para el proyecto. En este caso vamos a desplegar un sistema de monitorización con la herramienta zabbix a modo de ejemplo.
mkdir zabbix
Una vez hecha la carpeta, crear el docker-compose
vim docker-compose.yml
Nota: muy importante, la sintaxis yaml no acepta tabulaciones
Ejemplo de docker-compose:
version: '3' services: zabbix-db: image: monitoringartist/zabbix-db-mariadb container_name: zabbix-db hostname: zabbix-db restart: always volumes: - zabbix-db-storage:/var/lib/mysql - backups:/backups - /etc/localtime:/etc/localtime:ro environment: - MARIADB_USER=zabbix - MARIADB_PASS=zabbix zabbix-server: image: monitoringartist/zabbix-xxl container_name: zabbix-server hostname: zabbix-server restart: always ports: - "80:80" - "10051:10051" volumes: - /etc/localtime:/etc/localtime:ro links: - zabbix-db:zabbix.db environment: - ZS_DBHost=zabbix.db - ZS_DBUser=zabbix - ZS_DBPassword=zabbix volumes: zabbix-db-storage: driver: local backups: driver: local
Cosas a tener en cuenta:
image: imagen de docker que se va a utilizar volumes: son los volumenes que se van a pasar al docker environment: las variables de entorno ports: puertos mapeados links: para indicar las referencias contra otro docker container_name: Nombre para el docker hostname: nombre del docker restart: para que se reinicie automáticamente cuando se cae
Comprobar la sintaxis
docker-compose config
Una vez comprobado el docker-compose, solo falta iniciarlo. Para ello:
docker-compose up -d
En el caso de que se quisiese levantar un docker-compose con otro nombre, hay que hacerlo de la siguiente manera:
docker-compose -f <docker-compose_file> up -d
De este modo se iniciará en modo demonio y levantará todo el zabbix automáticamente. Para comprobar que está bien levantado
docker-compose ps
Name Command State Ports --------------------------------------------------------------------------------------------------------------- zabbix-db /run.sh Up 3306/tcp zabbix-server /config/bootstrap.sh Up 0.0.0.0:10051->10051/tcp, 10052/tcp, 162/udp, 0.0.0.0:80->80/tcp
Si se quisiese parar/arrancar sería con los comandos
docker-compose stop
docker-compose start
También se pueden ver los logs de los contenedores
docker-compose logs
Y si se quieren ver en vivo
docker-compose logs -f
Para ver de un docker en concreto
docker-compose logs <nombre_docker>
Una vez desplegado el docker, podemos ver que tiene mapeado el puerto 80 al de nuestro host. Para acceder la panel web:
http://<ip_host>
admin / zabbix
Mas info:
https://docs.docker.com/compose/compose-file/
Also published on Medium.
Hola ¿se pueden configurar las notificaciones por mail? he intentado pero no salen los mails. Tampoco sé qué logs tendría que revisar para poder ver dónde está el problema.
Buenas,
Aquí tienes como configurarlo:
https://techexpert.tips/zabbix/zabbix-email-notification-setup/
Un saludo