Докер Хилчек с чистым ядром - PullRequest
0 голосов
/ 12 марта 2019

Я столкнулся с проблемой. Проблема в том, что команда docker ps отображает состояние моего контейнера всегда как нездоровый

Я воспроизвел эту проблему и отправил на Github: https://github.com/korenb/docker-healthcheck-aspnetcore.git

Мои шаги:

  • Я настроил конечную точку проверки работоспособности в проекте aspnetcore. Путь /health
  • Затем я создал докер и установил свойство HEALTHCHECK , как описано в официальных документах
  • Когда я запускаю контейнер, я вижу его статус нездоровый навсегда

Команда проверки: curl --fail http://localhost/health || exit 1

Я удивлен, что, если я запускаю эту команду через docker exec <container> curl --fail http://localhost/health, она работает

Я получаю некоторые журналы от docker inspect <container>, но я действительно понятия не имею, что не так.

{
    "Status": "unhealthy",
    "FailingStreak": 22,
    "Log": [{
            "Start": "2019-03-12T13:27:51.570474Z",
            "End": "2019-03-12T13:27:51.6708017Z",
            "ExitCode": -1,
            "Output": "OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused \"exec: \\\"curl --fail http://localhost/health || exit 1\\\": stat curl --fail http://localhost/health || exit 1: no such file or directory\": unknown"
        },
        {
            "Start": "2019-03-12T13:27:53.8550082Z",
            "End": "2019-03-12T13:27:53.9882208Z",
            "ExitCode": -1,
            "Output": "OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused \"exec: \\\"curl --fail http://localhost/health || exit 1\\\": stat curl --fail http://localhost/health || exit 1: no such file or directory\": unknown"
        }
    ]
}

Я в отчаянии, поэтому я надеюсь, что сообщество поможет мне разобраться в проблеме

1 Ответ

0 голосов
/ 13 марта 2019

дьявол кроется в деталях

Я узнал от Ошибка выполнения exec во время выполнения OCI: ошибка exec: (…) исполняемый файл не найден в $ PATH ": неизвестно что команда должна быть очищена от любых кавычек.

Так что в dockerfile я заменил

HEALTHCHECK ... CMD ["curl --fail http://localhost/health || exit 1"]

на

HEALTHCHECK ... CMD curl --fail http://localhost/health || exit 1

Вы можете увидеть это здесьhttps://github.com/korenb/docker-healthcheck-aspnetcore/commit/6a24b394b9d60bab75d2b7daf549aa86576c2bb5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...