virli/tutorial/2/supervisor.md

59 lines
2.1 KiB
Markdown
Raw Normal View History

2015-10-29 04:45:40 +00:00
\newpage
# Plusieurs daemons dans un conteneur
## Script d'init
2016-09-14 20:51:14 +00:00
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.
2015-10-29 04:45:40 +00:00
2016-09-14 20:51:14 +00:00
Pour lancer tous nos daemon, nous allons donc besoin d'écrire un script qui
lance puis attend que les deux deamons aient terminés de s'exécuter
2015-10-29 04:45:40 +00:00
## Autorestart
2016-09-14 20:51:14 +00:00
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` :
2015-10-29 04:45:40 +00:00
```
docker run -d -p 80:80 --restart=on-failure nginx
```
Il existe trois règles de redémarrage différentes :
2016-09-14 20:51:14 +00:00
- **`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.
2015-10-29 04:45:40 +00:00
2016-09-14 20:51:14 +00:00
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 l'application `supervisor`
2015-10-29 04:45:40 +00:00
répond parfaitement à notre problématique !
## `supervisor`
2016-09-14 20:51:14 +00:00
Première étape : installer `supervisor`, le paquet se trouve dans les dépôts.
2015-10-29 04:45:40 +00:00
2016-09-14 20:51:14 +00:00
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`.
2015-10-29 04:45:40 +00:00
Vous pouvez vous aider de la documentation disponible à :
<http://supervisord.org/configuration.html>
## C'est parti !
2016-09-14 20:51:14 +00:00
Votre conteneur doit maintenant être parfaitement fonctionnel : vous devriez
pouvoir lancer votre script de monitoring et voir apparaître vos données dans
Grafana !