web-dev-qa-db-fra.com

Azure Web App sur Linux: "Erreur: le conteneur n'a pas répondu aux pings HTTP sur le port: 8080" - lors de l'utilisation: "start": "pm2 start server.js"

Mon instance Linux d'App Service se bloque si mon application de nœud utilise le script de démarrage: "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.

Les journaux de conteneur n'ont que l'erreur ci-dessus. Si j'utilise juste: "start": "node server.js", l'application démarre très bien.

Je comprends que si le conteneur ne répond pas via 8080, le conteneur est arrêté, mais j'ai process.env.PORT défini comme port de mon serveur, je ne peux donc pas comprendre pourquoi le script de démarrage pm2 plante le conteneur.

J'ai le sentiment que process.env.PORT n'est pas défini si vous utilisez le script de démarrage ci-dessus en raison d'un mélange dans le processus, mais ne trouve aucun moyen de le déboguer car après le crash du conteneur, je ne peux plus y entrer ssh to l'inspecter.

J'apprécierais vraiment toute suggestion, merci.

4
Edmond Tamas

Essayons-nous de cingler sur le PORT 8080? Le problème ici est que le port 8080 n'est pas exposé, donc lorsque nous essayons d'envoyer une requête ping au conteneur, nous ne faisons pas de ping sur un port sur lequel le conteneur écoute.

Il existe plusieurs façons de résoudre ce problème.

  1. Utilisez l'instruction EXPOSE dans votre Dockerfile pour exposer le port 8080.
  2. Utilisez le paramètre de l'application WEBSITES_PORT avec une valeur de "8080" pour exposer ce port.

Vous pouvez consulter les articles mentionnés ci-dessous:

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/

3

Essayez d'ajouter le paramètre d'application PORT avec la valeur du port sur lequel votre application écoute.

Réf: https://github.com/MicrosoftDocs/Azure-docs/issues/34451

0
Steve Smith