docker_compose
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
docker_compose [2025/08/02 11:59] – luc | docker_compose [2025/09/09 09:15] (Version actuelle) – luc | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Docker compose ====== | ====== Docker compose ====== | ||
- | Docker compose est à la fois un programme docker compose et à la fois un fichier de configuration (en YAML).\\ | + | Docker compose est à la fois un programme |
L' | L' | ||
Ligne 10: | Ligne 10: | ||
===== Fichier de configuration ===== | ===== Fichier de configuration ===== | ||
- | Les règles pour | + | [[https:// |
+ | |||
+ | Contient les règles pour décrire le service que l'on souhaite. Il peut être composé de plusieurs containers, de volumes et de networks. | ||
+ | |||
+ | Traditionnellement, | ||
+ | |||
+ | Il est conseillé d' | ||
+ | |||
+ | On trouve plusieurs infos sur la structure d'un Compose file. La spécification a évoluée, et certains directives (comme top-level version) sont obsolètes. Je ne vais lister ici que ce qui est à jour à la date de création de cet article (2/ | ||
+ | |||
+ | === Elements de config === | ||
+ | |||
+ | (/!\ orthographe et casse) | ||
+ | |||
+ | Top-level : | ||
+ | |||
+ | * '' | ||
+ | |||
+ | * '' | ||
+ | * Contient donc des containers, qui sont définis par des arguments: | ||
+ | * Peut contenir une section '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * HOST is [IP:](port | range) (optional). If it is not set, it binds to all network interfaces (0.0.0.0). | ||
+ | * CONTAINER is port | range. | ||
+ | * PROTOCOL restricts ports to a specified protocol either tcp or udp(optional). Default is tcp. | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | * '' | ||
+ | * Pour utiliser un volume dans plusieurs services, il faut que chacun l' | ||
+ | * L' | ||
+ | |||
+ | * '' | ||
+ | * Par défaut, il y a 1 seul réseau pour toute l' | ||
+ | * Il faut détailler la config du réseau sous la directive top-level '' | ||
+ | * à minima il faut donner un nom au réseau | ||
+ | * Si un service est connectée à un réseau, il faut l' | ||
+ | |||
+ | === Exemple === | ||
+ | |||
+ | <code yaml> | ||
+ | name: nom_de_mon_application | ||
+ | |||
+ | services: | ||
+ | nom_container_1: | ||
+ | image: example/ | ||
+ | networks: | ||
+ | - network_name_1 | ||
+ | secrets: | ||
+ | - secret_name_1 | ||
+ | |||
+ | nom_container_2: | ||
+ | image: example/ | ||
+ | volumes: | ||
+ | - volume_name_1:/ | ||
+ | ports: | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | - " | ||
+ | |||
+ | nom_container_3: | ||
+ | image: example/ | ||
+ | links: | ||
+ | - nom_container_1 | ||
+ | restart: always | ||
+ | |||
+ | networks: | ||
+ | network_name_1: | ||
+ | |||
+ | volumes: | ||
+ | volume_name_1: | ||
+ | external: true | ||
+ | |||
+ | secrets: | ||
+ | secret_name_1: | ||
+ | file: / | ||
+ | |||
+ | </ | ||
===== Docker compose CLI ===== | ===== Docker compose CLI ===== | ||
Ligne 18: | Ligne 102: | ||
Depuis, les fonctionnalités ont été intégrées à l' | Depuis, les fonctionnalités ont été intégrées à l' | ||
- | Etant donné que c'est la version référencée dans les [[https:// | + | Etant donné que c'est la version référencée dans les [[https:// |
=== CLI === | === CLI === | ||
Ligne 26: | Ligne 110: | ||
# Executer les recettes du fichier dpcker-compose.yml du dossier actuel | # Executer les recettes du fichier dpcker-compose.yml du dossier actuel | ||
# Créer et démarrer les containers | # Créer et démarrer les containers | ||
- | docker compose up | + | docker compose up --detach |
+ | # --detach pour lancer en arrière plan | ||
# Stop and remove containers, networks | # Stop and remove containers, networks | ||
docker compose down | docker compose down | ||
+ | |||
+ | # Pour voir le statut des services définis dans le Compose file | ||
+ | docker compose ps | ||
# Start/stop services | # Start/stop services | ||
Ligne 37: | Ligne 125: | ||
# -f : pour spécifier un ou plusieurs Compose files | # -f : pour spécifier un ou plusieurs Compose files | ||
docker compose -f compose_file_1.yaml -f compose_file_2.yml | docker compose -f compose_file_1.yaml -f compose_file_2.yml | ||
- | |||
- | # -p : pour définir un nom de projet (si pas défini dans le Compose file) | ||
- | # exemple pour lister les container : | ||
- | docker compose -p project_name ps -a | ||
# -dry-run : pour voir ce que ça donne sans tout exectuer pour de vrai | # -dry-run : pour voir ce que ça donne sans tout exectuer pour de vrai | ||
docker compose --dry-run up | docker compose --dry-run up | ||
+ | </ | ||
+ | De nombreuses commande de '' | ||
+ | |||
+ | ===== Définir des variables d' | ||
+ | |||
+ | Parfois, certaines valeurs du docker compose file sont reprises à plusieurs endroits, et il fait sens de regrouper ces valeurs dans un fichier '' | ||
+ | |||
+ | === Fichier .venv === | ||
+ | |||
+ | Le fichier '' | ||
+ | Le contenu du fichier est une liste de paramètres, | ||
+ | <code properties> | ||
+ | # Des lignes commentaires précédées d'un "#" | ||
+ | # | ||
+ | TAG=15-slim | ||
+ | OPENPROJECT_HTTPS=false | ||
+ | OPENPROJECT_HOST__NAME=localhost | ||
+ | PORT=127.0.0.1: | ||
+ | PGDATA="/ | ||
</ | </ | ||
+ | |||
+ | L' | ||
+ | <code properties> | ||
+ | web: | ||
+ | environment: | ||
+ | - DEBUG=${DEBUG} | ||
+ | </ | ||
+ | |||
+ | Note: Dans la version docker CLI, on passe les variables avec l' | ||
+ | |||
+ | === Interpolation === | ||
+ | L' | ||
+ | * Direct substitution | ||
+ | * '' | ||
+ | * Default value | ||
+ | * '' | ||
+ | * '' | ||
+ | * Required value | ||
+ | * '' | ||
+ | * '' | ||
+ | * Alternative value | ||
+ | * '' | ||
+ | * '' | ||
+ |
docker_compose.1754135980.txt.gz · Dernière modification : de luc