61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
\newpage
|
|
|
|
# Plusieurs daemons dans un conteneur
|
|
|
|
## Script d'init
|
|
|
|
Lors du dernier TP, nous avons vu que les conteneurs étaient détruits
|
|
dès que le premier processus du conteneur (celui qui a le PID 1, à la
|
|
place d'`init`) terminer son exécution, quelque soit le statut de ses
|
|
éventuels fils.
|
|
|
|
Pour lancer tous nos daemon,
|
|
|
|
|
|
## Autorestart
|
|
|
|
L'avantage de détruire le conteneur à la mort du père, est que s'il
|
|
s'agit de notre processus principal et qu'il est seul (par exemple
|
|
`nginx` pour un conteneur qui délivre des pages web), il va être
|
|
possible de redémarrer le conteneur automatiquement grâce à la
|
|
*restart policy* que l'on peut définir au moment du `docker run` :
|
|
|
|
```
|
|
docker run -d -p 80:80 --restart=on-failure nginx
|
|
```
|
|
|
|
Il existe trois règles de redémarrage différentes :
|
|
|
|
- **`no` :** il s'agit de la règle par défaut. Lorsque l'exécution du
|
|
conteneur se termine, il n'est pas redémarré.
|
|
- **`on-failure[:max-retries]` :** redémarre uniquement si le code de
|
|
sortie du conteneur n'est pas 0. Il est possible de préciser pour
|
|
cette option le nombre maximum de redémarrage qui sera tenté.
|
|
- **`always` :** redémarre le conteneur dans tous les cas, quelque
|
|
soit son code de sortie et indéfiniment.
|
|
|
|
Le script d'init que vous avez réalisé ne tient sans doute pas compte
|
|
de cela. Mais plein de gens ont cette problématique et `supervisor`
|
|
répond parfaitement à notre problématique !
|
|
|
|
|
|
## `supervisor`
|
|
|
|
Première étape : installer `supervisor`, le paquet se trouve dans les
|
|
dépôts.
|
|
|
|
L'étape suivante consiste à remplir puis copier le fichier de
|
|
configuration dans le conteneur. Vous allez devoir écraser dans votre
|
|
conteneur le fichier `/etc/supervisord.conf` pour démarrer à la fois
|
|
`grafana` et `influxdb`.
|
|
|
|
Vous pouvez vous aider de la documentation disponible à :
|
|
<http://supervisord.org/configuration.html>
|
|
|
|
|
|
## C'est parti !
|
|
|
|
Votre conteneur doit maintenant être parfaitement fonctionnel : vous
|
|
devriez pouvoir lancer votre script de monitoring et voir apparaître
|
|
vos données dans Grafana !
|