Azure Web App в Linux: «Ошибка: контейнер не отвечает на запросы HTTP на порт: 8080» - при использовании: «start»: «pm2 start server.js» - PullRequest
0 голосов
/ 15 апреля 2019

Мой экземпляр службы приложений Linux аварийно завершает работу, если приложение моего узла использует сценарий запуска: "start": "pm2 start server.js":

2019-04-15 11:36:34.432 ERROR - Container crime-digest__6ea5_0 for site crime-digest__6ea5 has exited, failing site start
2019-04-15 11:36:34.489 ERROR - Container crime-digest__6ea5_0 didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.

В журналах контейнера нет ничего, кроме вышеприведенной ошибки.Если я использую только: "start": "node server.js", приложение запускается нормально.

Я понимаю, что если контейнер не отвечает через 8080, контейнер останавливается, но я установил process.env.PORT в качестве портамой сервер, так что я не могу понять, почему стартовый скрипт pm2 приводит к сбою контейнера.

У меня такое ощущение, что process.env.PORT не определен, если использовать вышеуказанный стартовый скрипт из-за некоторой путаницы в процессе, но может 'Я не могу найти способ его отладки, потому что после сбоя контейнера я больше не могу ssh войти в него для его проверки.

Буду очень признателен за любые предложения, спасибо.

1 Ответ

2 голосов
/ 23 апреля 2019

Пытаемся ли мы пинговать порт 8080?Проблема здесь в том, что порт 8080 не открыт, поэтому, когда мы пытаемся пропинговать контейнер, мы не пингуем порт, к которому контейнер прислушивается.

Существует несколько способов решения этой проблемы.

  1. Используйте инструкцию EXPOSE в Dockerfile, чтобы открыть порт 8080.
  2. Используйте настройку приложения WEBSITES_PORT сзначение «8080» для предоставления этого порта.

Вы можете ссылаться на следующие статьи:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment?view=azure-devops

https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/

...