2.0 KiB
\newpage
Compose
Avec notre conteneur utilisant supervisor
, nous ne respectons pas
bien cette dernière bonne pratique d'un seul processus par conteneur
:-(
L'intérêt est de permettre à chaque conteneur d'effectuer une tâche générique, de manière à pouvoir être réutilisé pour d'autres projets dans le futur. Par exemple, notre conteneur InfluxDB pourra être utilisé pour stocker des relevés de métriques systèmes ou des logs. Grafana peut également afficher davantage d'informations ou combiner les informations de plusieurs bases distinctes.
Séparer le Dockerfile
Commençons par séparer notre Dockerfile
en deux : dans une partie
nous allons garder la partie InfluxDB, de l'autre la partie Grafana.
Il va vous falloir créer deux dossiers distincts, il en faut un par
Dockerfile
.
Profitez en pour rajouter les Data Volume Container, si vous ne l'avez pas fait dans la partie précédente !
Automatiser la construction et le lancement
Commencez par lancer tous vos conteneurs à la main pour voir les étapes que vous allez devoir automatiser.
Au lieu de faire un script pour construire et lancer tous vos
conteneurs, définissez à la racine de votre projet un fichier
docker-compose.yml
qui contiendra les méthodes de construction et
les paramètres d'exécution.
influxdb:
...
grafana:
build: grafana/
image: nginx
ports:
- "3000:3000"
volumes:
- ./:/tmp/toto
links:
- influxdb
Ce fichier est un condensé des options que vous passez habituellement
au docker run
.
L'exemple ci-dessus est à adapter largement, consultez http://docs.docker.com/compose/yml/ pour une liste exhaustive des options que vous pouvez utiliser.
Une fois que votre docker-compose.yml
sera prêt, lancez tout d'abord
docker-compose build
pour commencer la phase de build de tous les
conteneurs listés dans le fichier.
Une fois le build terminé, vous pouvez lancer la commande suivante pour admirer le résultat :
docker-compose up