2017-06-19 2 views
1

Après le déploiement d'un conteneur python Docker et l'exécution avec succès d'un script de panne du conteneur et redémarre dans une boucle après avoir affiché le message d'erreur suivant:accidents de conteneurs Docker après l'exécution du script python

2017-06-19 13:22:49 [APP/PROC/WEB/0] OUT Exit status 0 
2017-06-19 13:22:49 [CELL/0] OUT Exit status 0 
2017-06-19 13:22:49 [CELL/0] OUT Destroying container 
2017-06-19 13:22:49 [API/0] OUT Process has crashed with type: "web" 
2017-06-19 13:22:49 [API/0] OUT App instance exited with guid 85e7922e-5a0c-4430-994a-324e5abc0c14 payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* Codependent step exited\n* cancelled", "crash_count"=>1, "crash_timestamp"=>1497871369566402154, "version"=>"b9800e3a-b057-4cc5-b7e4-c01f9b3c6594"} 

L'exécution de la même image de menu fixe localement il ne jette aucune erreur. Le script Python que j'exécute effectue une commande d'impression simple et j'ai même implémenté un gestionnaire pour le signal SIGTERM qui est envoyé dans le conteneur après l'exécution.

+0

On dirait une terminaison normale: 'état de sortie 0' pas comme un accident. Il semble que quelque chose essaie de redémarrer le conteneur. – Henry

+0

L'exécution de la même application sur un Docker local exécute le script correctement et détruit le conteneur. Cependant, sur CloudFoundry, il redémarre le conteneur dans une boucle. – user3080315

+0

Je n'ai aucune expérience avec CloudFoundry. Avez-vous spécifié quelque part le comportement de redémarrage du conteneur. – Henry

Répondre

3

Dans CF, les applications ne sont pas censées se terminer. Mais si votre script imprime juste quelque chose, il effectuera un exit 0 par la suite. Ainsi, le conteneur d'application est arrêté et CF enregistre un « accident », et puis redémarrez l'application conformément au cycle de vie de l'application: https://docs.cloudfoundry.org/devguide/deploy-apps/app-lifecycle.html

+0

Merci pour l'illumination. Y a-t-il une solution pour réparer le redémarrage? Cela ne me dérange pas l'accident mais je ne veux pas que le conteneur redémarre tout le temps. – user3080315

+1

@ user3080315 Je ne pense pas, car les applications sont supposées être toujours en cours d'exécution. Vous devriez implémenter une sorte de solution de contournement, comme arrêter l'application de l'extérieur une fois qu'elle s'est plantée ou ajouter une boucle sans fin (avec seulement un long sommeil) à la fin du script. –