59 lines
2.1 KiB
Markdown
59 lines
2.1 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, nous allons donc besoin d'écrire un script qui
|
|
lance puis attend que les deux deamons aient terminés de s'exécuter
|
|
|
|
|
|
## 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 l'application `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 !
|