J'ai créé mon image de conteneur, mais lorsque j'essaie de la déployer à partir de la ligne de commande gcloud
ou de la console Cloud, j'obtiens l'erreur suivante: "Le conteneur n'a pas pu démarrer. Impossible de démarrer puis d'écouter sur le port défini par la variable d'environnement PORT. "
L'une des autres raisons est peut-être celle que j'ai observée. Les images Docker peuvent ne pas avoir le code requis pour exécuter l'application.
J'avais une application Node écrite en TypeScript. Pour ancrer l'application, tout ce que je dois faire est de compiler le code tsc
et d'exécuter docker build
mais je pense que gcloud builds submit s'en occupera et choisira le code compilé comme le Dockerfile l'a suggéré en conjonction avec le .dockerignore et construira mon code source et le soumettra au référentiel.
Mais tout ce qu'il a fait, c'est de copier mon code source et de le soumettre à Cloud Build et là, conformément au Dockerfile, il a ancré mon code source par rapport à l'ancrage du code compilé.
N'oubliez donc pas d'inclure une étape de construction dans Dockerfile si vous faites un code source dans une langue nécessitant une compilation.
Une autre possibilité est que l'image de docker se termine par une commande qui prend du temps. Au moment où le déploiement démarre, le serveur n'est pas encore en cours d'exécution et le bilan de santé sera vide.
Quel genre de commandement serait-ce? Habituellement, toute commande qui exécute le serveur en mode dev. Pour Scala/SBT, ce serait sbt run
ou dans Node ce serait quelque chose comme npm run dev
. En bref, assurez-vous de ne fonctionner que sur la version packagée.