⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Spécification Compose Develop

Table des matières

Note

Develop 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 section build 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'attribut target.
  • sync+restart : Compose synchronise les fichiers source avec le contenu du conteneur selon l'attribut target, 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'attribut target, puis exécute une commande à l'intérieur du conteneur. Disponible avec Docker Compose version 2.32.0 et ultérieures.

exec

Requires: Docker Compose 2.32.2 and later

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.