Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:docker:good_practices:init [2020/10/13 14:48] – créée qduchemi | technique:docker:good_practices:init [2020/10/13 16:03] (Version actuelle) – qduchemi | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n> | ||
# Utiliser un système d' | # Utiliser un système d' | ||
+ | |||
+ | < | ||
## Problématique | ## Problématique | ||
Ligne 7: | Ligne 10: | ||
Autre problème, même si la commande s' | Autre problème, même si la commande s' | ||
- | < | + | < |
Ce processus est le parent de tous les autres, et doit transmettre les signaux qu'il reçoit à ses enfants (par exemple, un signal de terminaison). | Ce processus est le parent de tous les autres, et doit transmettre les signaux qu'il reçoit à ses enfants (par exemple, un signal de terminaison). | ||
< | < | ||
- | Un peu d' | + | Un peu d' |
* `SIGTERM`, pour demander à un processus de se terminer | * `SIGTERM`, pour demander à un processus de se terminer | ||
* `SIGINT`, envoyé avec un `Ctrl+C`, par exemple | * `SIGINT`, envoyé avec un `Ctrl+C`, par exemple | ||
Ligne 24: | Ligne 27: | ||
Sauf... pour le processus de PID 1. Dans ce cas, il n'y a pas de comportement par défaut. | Sauf... pour le processus de PID 1. Dans ce cas, il n'y a pas de comportement par défaut. | ||
- | < | + | < |
Or, la plupart des applications lancées avec le PID 1 (par exemple Python) n'ont pas de *handlers*. | Or, la plupart des applications lancées avec le PID 1 (par exemple Python) n'ont pas de *handlers*. | ||
Ligne 31: | Ligne 34: | ||
Compose, depuis la version 3.7, adresse ce problème avec une directive très simple : | Compose, depuis la version 3.7, adresse ce problème avec une directive très simple : | ||
- | ``` | + | ```yaml |
services: | services: | ||
exemple: | exemple: | ||
Ligne 41: | Ligne 44: | ||
Tini va : | Tini va : | ||
+ | * S' | ||
* S' | * S' | ||
* Transmettre les signaux aux enfants : comme ils n'ont pas le PID 1, alors le fonctionnement par défaut (à savoir tuer le processus s'il n'a pas installé de *handler*) fonctionne. | * Transmettre les signaux aux enfants : comme ils n'ont pas le PID 1, alors le fonctionnement par défaut (à savoir tuer le processus s'il n'a pas installé de *handler*) fonctionne. | ||
+ | * Attendre la terminaison de son enfant pour terminer, même si celui-ci s' | ||
* Terminer avec le code de retour de son enfant, ce qui permet de savoir s'il y a eu une erreur ou non. | * Terminer avec le code de retour de son enfant, ce qui permet de savoir s'il y a eu une erreur ou non. | ||
< | < |