Spécification Compose Develop
NoteDevelop est une partie optionnelle de la Spécification Compose. Elle est disponible avec Docker Compose version 2.22.0 et ultérieures.
Cette page définit comment Compose se comporte pour vous assister efficacement et définit les contraintes de développement et les flux de travail définis par Compose. Seul un sous-ensemble des services de fichier Compose peut nécessiter une sous-section develop
.
Exemple illustratif
services:
frontend:
image: example/webapp
build: ./webapp
develop:
watch:
# synchroniser le contenu statique
- path: ./webapp/html
action: sync
target: /var/www
ignore:
- node_modules/
backend:
image: example/backend
build: ./backend
develop:
watch:
# reconstruire l'image et recréer le service
- path: ./backend/src
action: rebuild
Attributs
La sous-section develop
définit les options de configuration qui sont appliquées par Compose pour vous assister pendant le développement d'un service avec des flux de travail optimisés.
watch
L'attribut watch
définit une liste de règles qui contrôlent les mises à jour automatiques de service basées sur les changements de fichiers locaux. watch
est une séquence, chaque élément individuel dans la séquence définit une règle à appliquer par Compose pour surveiller le code source pour les changements. Pour plus d'informations, voir
Utiliser Compose Watch.
action
action
définit l'action à prendre quand des changements sont détectés. Si action
est définie à :
rebuild
: Compose reconstruit l'image de service basée sur la sectionbuild
et recrée le service avec l'image mise à jour.restart
: Compose redémarre le conteneur de service. Disponible avec Docker Compose version 2.32.0 et ultérieures.sync
: Compose garde le(s) conteneur(s) de service existant(s) en cours d'exécution, mais synchronise les fichiers source avec le contenu du conteneur selon l'attributtarget
.sync+restart
: Compose synchronise les fichiers source avec le contenu du conteneur selon l'attributtarget
, puis redémarre le conteneur. Disponible avec Docker Compose version 2.23.0 et ultérieures.sync+exec
: Compose synchronise les fichiers source avec le contenu du conteneur selon l'attributtarget
, puis exécute une commande à l'intérieur du conteneur. Disponible avec Docker Compose version 2.32.0 et ultérieures.
exec
exec
n'est pertinent que quand action
est définie à sync+exec
. Comme les hooks de service, exec
est utilisé pour définir la commande à exécuter à l'intérieur du conteneur une fois qu'il a démarré.
command
: Spécifie la commande à exécuter une fois que le conteneur démarre. Cet attribut est requis, et vous pouvez choisir d'utiliser soit la forme shell soit la forme exec.user
: L'utilisateur pour exécuter la commande. Si non défini, la commande est exécutée avec le même utilisateur que la commande principale du service.privileged
: Permet à la commande de s'exécuter avec un accès privilégié.working_dir
: Le répertoire de travail dans lequel exécuter la commande. Si non défini, elle est exécutée dans le même répertoire de travail que la commande principale du service.environment
: Définit les variables d'environnement pour exécuter la commande. Pendant que la commande hérite des variables d'environnement définies pour la commande principale du service, cette section vous permet d'ajouter de nouvelles variables ou de remplacer celles existantes.
services:
frontend:
image: ...
develop:
watch:
# synchroniser le contenu puis exécuter la commande pour recharger le service sans interruption
- path: ./etc/config
action: sync+exec
target: /etc/config/
exec:
command: app reload
ignore
L'attribut ignore
peut être utilisé pour définir une liste de motifs pour les chemins à ignorer. Tout fichier mis à jour qui correspond à un motif, ou appartient à un dossier qui correspond à un motif, ne déclenchera pas la recréation des services. La syntaxe est la même que le fichier .dockerignore
:
*
correspond à 0 ou plus caractères dans un nom de fichier.?
correspond à un seul caractère dans un nom de fichier.*/*
correspond à deux dossiers imbriqués avec des noms arbitraires**
correspond à un nombre arbitraire de dossiers imbriqués
Si le contexte de construction inclut un fichier .dockerignore
, les motifs dans ce fichier sont chargés comme contenu implicite pour le fichier ignores
, et les valeurs définies dans le modèle Compose sont ajoutées.
include
Il est parfois plus facile de sélectionner les fichiers à surveiller au lieu de déclarer ceux qui ne devraient pas être surveillés avec ignore
.
L'attribut include
peut être utilisé pour définir un motif, ou une liste de motifs, pour les chemins à considérer pour la surveillance. Seuls les fichiers qui correspondent à ces motifs seront considérés lors de l'application d'une règle de surveillance. La syntaxe est la même que ignore
.
services:
backend:
image: example/backend
develop:
watch:
# reconstruire l'image et recréer le service
- path: ./src
include: *.go
action: rebuild
path
L'attribut path
définit le chemin vers le code source (relatif au répertoire du projet) à surveiller pour les changements. Les mises à jour de tout fichier à l'intérieur du chemin, qui ne correspond à aucune règle ignore
, déclenche l'action configurée.
target
L'attribut target
s'applique seulement quand action
est configurée pour sync
. Les fichiers dans path
qui ont des changements sont synchronisés avec le système de fichiers du conteneur, de sorte que ce dernier s'exécute toujours avec du contenu à jour.