Volver a la página principal
martes 5 noviembre 2024
13

Cómo usar healthcheck en Docker Compose

El comando healthcheck en Docker Compose permite verificar el estado de salud de un servicio dentro de un contenedor, asegurando que la aplicación esté funcionando correctamente antes de que otros servicios dependientes inicien. Esto es útil para coordinar la carga de aplicaciones que dependen unas de otras y mejorar la estabilidad del entorno.

Configuración de healthcheck en Docker Compose

El healthcheck en Docker Compose se configura dentro del archivo docker-compose.yml bajo el servicio que se desea monitorear. Dentro de esta configuración, puedes definir el comando a ejecutar, el intervalo de verificación, el tiempo de espera y otras opciones.

Opciones de configuración de healthcheck

Opción Descripción
test Comando que ejecuta la verificación de salud (puede ser una cadena o lista de comandos).
interval Frecuencia de la verificación (por defecto 30s).
timeout Tiempo máximo para que la verificación se complete (por defecto 30s).
retries Número de intentos fallidos antes de que el servicio se marque como unhealthy.
start_period Tiempo de espera antes de realizar la primera verificación, útil para servicios que tardan en iniciar.

Ejemplo de configuración

Aquí tienes un ejemplo de configuración healthcheck para un contenedor de base de datos en Docker Compose:

version: '3.8'

services:
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 30s

En este ejemplo:

  • test ejecuta el comando mysqladmin ping para verificar si el servicio MySQL está disponible.
  • interval configura el chequeo cada 10 segundos.
  • timeout especifica que el comando tiene 5 segundos para completarse.
  • retries determina que, si hay 3 fallos consecutivos, el contenedor se marca como unhealthy.
  • start_period espera 30 segundos antes de iniciar el chequeo de salud, dándole tiempo al contenedor para arrancar.

Ejemplos de uso de healthcheck

Chequeo en un servicio web

services:
  web:
    image: nginx:latest
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
      interval: 15s
      timeout: 3s
      retries: 3

Verificación de un servicio Redis

services:
  redis:
    image: redis:latest
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 5s

Referencias

Para más detalles, consulta la documentación oficial de Docker sobre Healthcheck.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer