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 | Dernière révisionLes deux révisions suivantes | ||
technique:tech_team:pres_compose [2021/10/17 03:23] – qduchemi | technique:tech_team:pres_compose [2021/11/15 23:19] – qduchemi | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
## C'est quoi Docker Compose ? | ## C'est quoi Docker Compose ? | ||
+ | Docker Compose est un outil d' | ||
+ | ### Mais pourquoi diable un énième outil ? | ||
+ | |||
+ | < | ||
+ | |||
+ | Pour comprendre pourquoi on utilise un outil supplémentaire, | ||
+ | |||
+ | ``` | ||
+ | docker run -d --name quentin -p 80:80 -v quentin:/ | ||
+ | ``` | ||
+ | |||
+ | C'est déjà long, et encore, il n'y a que quelques options. Imagine qu'à chaque mise à jour, il faille taper la même commande pour relancer le conteneur! C'est long et pénible, il y a des risques d' | ||
+ | |||
+ | Et c'est là qu' | ||
+ | |||
+ | C'est génial, parce que le fichier de configuration peut être versionné sur Git, partagé entre plusieurs machines et modifié collaborativement, | ||
+ | |||
+ | ### Cas d' | ||
+ | |||
+ | Compose est particulièrement indiqué pour les applications avec plusieurs conteneurs. Par exemple, Mattermost n'est pas un seul conteneur : c'est un serveur web et une base de données. Compose permet de décrire les dépendances entre ces conteneurs, et de les lancer d'un seul coup. | ||
+ | |||
+ | Compose est aussi très utile pour déclarer des volumes ou des réseaux Docker, dont on reparlera avec [[technique: | ||
+ | |||
+ | Enfin, toutes les commandes Compose permettent de vérifier les journaux d'une application, | ||
+ | |||
+ | ### Un détour par le format YAML | ||
+ | |||
+ | Les fichiers de configuration de Docker Compose sont au format `YAML`. C'est un format qui exprime la « hiérarchie » par des espaces. Un exemple simple où je veux décrire des groupes de musiques et des salles de concert : | ||
+ | |||
+ | ```yaml | ||
+ | artists: | ||
+ | - title: System of a Down | ||
+ | year: 1992 | ||
+ | albums: | ||
+ | - ... | ||
+ | - title: Mansfield.TYA | ||
+ | year: 2002 | ||
+ | | ||
+ | theaters: | ||
+ | maroquinerie: | ||
+ | title: La maroquinerie | ||
+ | trianon: | ||
+ | title: Le Trianon | ||
+ | ``` | ||
+ | |||
+ | On voit qu'il y a deux « blocs » de premier niveau, et qu'à chaque décalage on décrit quelque chose de plus précis. Ce qu'il y avant un `:` s' | ||
+ | |||
+ | < | ||
+ | Il y a une différence subtile entre les artistes et les salles. Les artistes sont listés avec des `-` alors que les salles n'ont pas de tiret. Pourquoi ? | ||
+ | |||
+ | C'est juste une histoire de nommage. Les artistes ne sont pas nommés, c'est simplement une liste. Ainsi, on pourrait dire « le premier artiste de `artists` », mais on ne peut pas le désigner directement. | ||
+ | Les salles sont nommées, on peut s'y référer directement, | ||
+ | |||
+ | En YAML, quand on a pas besoin de se référer explicitement à des sous-éléments, | ||
+ | </ | ||
+ | |||
+ | ### vim : un goût amer mais bien utile | ||
+ | |||
+ | La dernière fois, on a vu comment éditer un fichier avec `nano`. `nano` est bien pratique pour faire des petites modifications, | ||
+ | |||
+ | Je te propose donc de découvrir `vim`, un éditeur plus difficile à prendre en main mais très pratique pour éditer des fichiers YAML! | ||
+ | |||
+ | On va faire au plus simple : tu ouvres ton fichier `docker-compose.yml` avec `vim` : | ||
+ | |||
+ | ``` | ||
+ | vim docker-compose.yml | ||
+ | ``` | ||
+ | |||
+ | Tu appuies sur `I` pour rentrer en mode " | ||
+ | |||
+ | Enfin, tu appuies sur `:` pour rentrer en mode « commande », tu écris « wq » (_write_ and _quit_), puis `Entrée`. Et _voilà_ ! Ça peut paraître contre-intuitif parce qu'on ne rentre pas dans le pourquoi du comment, mais c'est tout ce que tu as besoin de savoir. Démonstration : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Note comment la barre du bas change au fil des commandes (`I` puis `:wq`). |