0
votes

Comment arrêter le conteneur Docker de commencer si l'initialisation de l'application a échoué?

Nous avons une application de service de flacon qui se connecte à une base de données MySQL pour les données. Cette application de flacon est serveur via GunCorn dans un conteneur Docker. Nous utilisons Docker-Compose pour la même chose.

Lorsque l'application commence, nous effectuons la connexion à la base de données. Si la connexion à la base de données échoue (3 tentatives), l'application ne parvient pas à initialiser et à quitter. Mais je remarque que le conteneur commence. Comment puis-je amener le conteneur à démarrer aussi bien lorsque mon application ne parvient pas à commencer?


1 commentaires

Si le processus principal dans un conteneur sort, le conteneur s'éteindra également. Pouvez-vous ajouter suffisamment de votre application d'application et de déploiement ( docker-compose.yml , des scripts d'entrée d'emballage impliqués) pour créer un Exemple reproductible minimal ?


3 Réponses :


0
votes

Utiliser redémarrage: non code> Il existe 3 options pour la stratégie de redémarrage.

- restart: no
- restart: always
- restart: on-failure


0 commentaires

0
votes

S'il commence vraiment (pas en redémarrage permanent), essayez d'ajouter ERP "EXIT 'ERR en haut du script de votre point d'entrée.


0 commentaires

0
votes

Vous devez d'abord indiquer docker-composant code> que vous voulez que tous les conteneurs arrêtent l'exécution à la sortie de votre service principal. Ceci est fait en utilisant - Abort-on-conteneur-exit code> argument de ligne de commande. Disons que si vous avez 2 services:

docker-compose.yml strong> p> xxx pré>

puis la ligne de commande ressemblera à quelque chose comme: p>

docker-compose up --exit-code-from flask --abort-on-container-exit


0 commentaires