Cloud Run impose le port d'écoute : il injecte la variable PORT (8080 par défaut) et sa sonde de
démarrage TCP attend une écoute sur ce port. La réécriture de Salma a remplacé process.env.PORT par
app.listen(3000) : le processus démarre bien (« port 3000 » dans les journaux), mais rien n'écoute
sur 8080, la sonde échoue et la révision n'est jamais prête.
L'image existe (Artifact Registry), un problème de droits sur l'image donnerait une erreur de téléchargement, et allonger le délai n'y changerait rien : la sonde attend 240 s un port que personne n'ouvrira. Pendant ce temps, l'ancienne révision continue de servir : Cloud Run ne bascule le trafic que vers une révision prête.
Incident résolu
Analyse et correction
Correction : lire le port depuis l'environnement dans server.js
(const port = Number(process.env.PORT) || 8080; app.listen(port)), puis redéployer
(gcloud run deploy api-commandes --source .). En dépannage, --port=3000 fonctionne aussi :
Cloud Run injecte alors PORT=3000.
Pour que cela ne recommence pas :
- règle d'équipe : le port vient toujours de
$PORT(12-factor), jamais en dur ; - tester l'image comme Cloud Run la lance :
docker run -e PORT=8080 -p 8080:8080 …puiscurl; - une étape de CI qui démarre le conteneur avec un port aléatoire et vérifie
/sante; - lire les journaux de la révision avant de toucher aux délais ou aux ressources.