Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:healthcheck

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:sistemas_operativos:cursos:healthcheck [2023/10/18 19:55] – [Healthcheck en imágenes] tempwininformatica:sistemas_operativos:cursos:healthcheck [2023/11/16 13:27] (actual) – [Healthcheck en imágenes] tempwin
Línea 10: Línea 10:
  
   * Al construir la imagen   * Al construir la imagen
 +  * Al lanzar un contenedor (docker run)
 +  * En Compose
 +  * Usando otros contenedores
  
 ===== Healthcheck en imágenes ===== ===== Healthcheck en imágenes =====
Línea 16: Línea 19:
  
 <code> <code>
 +
 +RUN echo "#!/bin/bash\n\nservice nginx status || exit 1" > /opt/healthcheck.sh
 +# con curl:
 +# RUN echo "#!/bin/bash\n\n curl -f http://localhost/ || exit 1" > /opt/healthcheck.sh
 +RUN chmod +x /opt/healthcheck.sh
 +
 FROM nginx FROM nginx
  
-HEALTHCHECK --interval=30s --tiemout=30s --start-period=5s --retries=3 CMD "curl -f http://localhost:80|| exit 1+HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD ["/opt/healthcheck.sh"
 +# HEALTHCHECK --interval=10s --timeout=10s --start-period=5s --retries=3 CMD curl -f http://localhost:80 || exit 1
 </code> </code>
  
Línea 26: Línea 36:
   * ''retries'': número de veces consecutivas que puede fallar la comprobación antes de considerar que el contenedor está en estado //unhealthy//   * ''retries'': número de veces consecutivas que puede fallar la comprobación antes de considerar que el contenedor está en estado //unhealthy//
   * ''CMD'' es lo que ejecutaremos como test / comprobación del estado de salud  del contenedor.   * ''CMD'' es lo que ejecutaremos como test / comprobación del estado de salud  del contenedor.
 +
 +Otra opción:
 +
 +<code>
 +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
 +    CMD [ $(curl -I -s http://127.0.0.1:8000 | head -n 1 | cut -d' ' -f2 | head -n 1) -eq 200 ] || exit 1
 +</code>
 +
 +Al ver el estado del contenedor:
 +
 +<code>
 +docker ps
 +
 +
 +</code>
 +
 +===== Docker Compose =====
 +
 +<code yaml>
 +services:
 +  web:
 +    image: nginx
 +    
 +    healthcheck:
 +      interval: 5s
 +      timeout: 5s
 +      start_period: 10s
 +      retries: 3
 +      test: curl -f http://localhost || exit 1
 +</code>
 +
 +===== A través de otro contenedor específico =====
 +
 +Hay contenedores que permiten monitorizar el estado de contenedores y reiniciar aquellos //unhealthy//. Por ejemplo: [[https://hub.docker.com/r/willfarrell/autoheal|Docker Autoheal]]
 +
 +<code>
 +docker run -d \
 +    --name autoheal \
 +    --restart=always \
 +    -e AUTOHEAL_CONTAINER_LABEL=all \
 +    -v /var/run/docker.sock:/var/run/docker.sock \
 +    willfarrell/autoheal
 +</code>
 +
 +Podemos incluirlo en un Compose:
 +
 +<code yaml>
 +services:
 +  web:
 +    image: nginx
 +
 +    # marcamos que queremos que actúe el Auto heal
 +    labels:
 +      - autoheal=true
 +    healthcheck:
 +      interval: 5s
 +      timeout: 5s
 +      start_period: 10s
 +      retries: 3
 +      test: curl -f http://localhost || exit 1
 +
 +  autoheal:
 +    image: willfarrell/autoheal
 +    restart: always
 +    environment:
 +      - AUTOHEAL_CONTAINER_LABEL=all
 +    volumes:
 +      - /var/run/docker.sock:/var/run/docker.sock
 +</code>
informatica/sistemas_operativos/cursos/healthcheck.1697651750.txt.gz · Última modificación: por tempwin