Рубрики
Uncategorized

Docker Healthcheck Experients с приложением Go Web

Проверьте функцию Docker HealthCheck с небольшим конфигурируемым веб-приложением Go с примером. Помечено с докером, DevOps, Go, начинающими.

Один хороший способ отслеживать статус вашего контейнера — использовать функцию HealthCheck Docker.

В рамках тестирования последовательных действий при нездоровительном контейнере мне пришлось экспериментировать, как это работает. Я написал небольшое приложение Go, которое отвечает на /Здоровье Запросы, а статус, который он отвечает, настраивается.

Веб-сервер слушает $ Порт (по умолчанию до 8080). Чтобы изменить его состояние, просто сделайте вызов API к одному из поддерживаемых действий. Вы можете либо подключить контейнер для выполнения его, Или если вы сопоставили порт на хосте, вы можете использовать его.

Поддерживаемые действия:

  • /саботаж сделает это ответить 500.
  • /Timeout сделает это ответить после 20 лет.
  • /восстановить Верните его обратно в здоровое состояние, с 200 ответов.

Вы можете найти исходный код здесь Отказ

От докера Документы

The HEALTHCHECK instruction has two forms:

    HEALTHCHECK [OPTIONS] CMD command (check container health by running a command inside the container)
    HEALTHCHECK NONE (disable any healthcheck inherited from the base image)

The HEALTHCHECK instruction tells Docker how to test a container to check that it is still working. 
This can detect cases such as a web server that is stuck in an infinite loop and unable 
to handle new connections, even though the server process is still running.

When a container has a healthcheck specified, it has a health status in addition to its normal status. 
This status is initially starting. Whenever a health check passes, it becomes healthy (whatever state 
it was previously in). After a certain number of consecutive failures, it becomes unhealthy.

Варианты, которые могут появляться до CMD:

--interval=DURATION (default: 30s)
--timeout=DURATION (default: 30s)
--start-period=DURATION (default: 0s)
--retries=N (default: 3)

Вы можете настроить настройки HealthCheck в Dockerfile или Docker-Compose.yml Отказ В моем примере Я использую его в DockerFile.

Демонстрация

  1. Клонировать репо и построить изображение: Docker Build. -t Go-Healthchecker

  2. Поднимите контейнер, подождите, пока он не будет здоровым.

  1. Чтобы изменить ответ HealthCheck, подключитесь к контейнеру и обновите его состояние

В будущем пост блога я поделюсь, как вы можете использовать ПРОВЕРКА ЗДОРОВЬЯ Функция для управления присоединением Docker-Compose Services с более тонким вариантом, например, «Как сделать сервис X начать перед сервисом y».

Оригинал: «https://dev.to/chen/docker-healthcheck-experiments-with-go-web-app-3c3p»