Générateur Docker Compose

Écrire un docker-compose.yml à la main impose de se rappeler l’indentation exacte, de mettre chaque mappage de ports entre guillemets et de savoir quelle chaîne de version votre binaire Compose comprend. Ce générateur vous permet de définir des services avec des champs simples : un nom, une image, des mappages de ports hôte:conteneur et des volumes. Il produit un fichier YAML valide conforme au spec Compose moderne (sans clé de version) avec des valeurs par défaut sensées.

Comment construire un fichier Compose

  1. 1

    Ajouter des services

    Indiquez pour chaque service un nom, une image, des mappages de ports hôte:conteneur et des volumes. Deux services de départ sont déjà remplis.

  2. 2

    Modifier ou supprimer des lignes

    Modifiez directement n'importe quel champ, ajoutez un service avec le bouton + Service ou supprimez une ligne dont vous n'avez pas besoin.

  3. 3

    Vérifier le YAML généré

    L'aperçu se met à jour pendant la saisie : les mappages de ports sont entre guillemets et la clé de version est omise, comme l'attend le spec Compose moderne.

  4. 4

    Copier le fichier

    Copiez le docker-compose.yml généré et collez-le à la racine de votre projet.

Le spec Compose moderne

Compose V2 (le plugin fourni avec Docker Desktop et les moteurs Docker récents) suit la Compose Specification. La clé version: est dépréciée ; le générateur l’omet. Les clés de premier niveau sont services, networks, volumes, configs et secrets.

Anatomie d’un service

Un service orienté production ressemble à ceci :

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volumes : montage lié ou volume nommé

  • Montage lié (./app:/var/www) relie le conteneur à un chemin de l’hôte ; idéal pour le développement local car les changements sont visibles immédiatement.
  • Volume nommé (pgdata:/var/lib/postgresql/data) est géré par Docker et persiste indépendamment de tout chemin de l’hôte ; le bon choix pour les bases de données et tout ce que vous ne voulez pas supprimer par accident avec rm -rf.
  • Volume anonyme - à éviter. Il survit aux redémarrages mais disparaît sans avertissement avec docker compose down -v.

Réseaux

Par défaut, Compose crée un réseau portant le nom du projet et y connecte chaque service. Déclarer des réseaux explicites est utile quand :

  • Vous voulez isoler une base de données d’un service exposé au public.
  • Vous avez besoin d’un pont avec un sous-réseau personnalisé pour vous aligner sur l’infrastructure existante.
  • Vous voulez rattacher des conteneurs à un réseau externe préexistant (external: true).

Erreurs courantes à éviter

  • Conflits de clé de version. version: "3.8" en tête empêche les fonctionnalités récentes comme start_interval du healthcheck de fonctionner avec un ancien Compose ; le générateur omet la clé de version.
  • Guillemets autour des ports. 8080:80 est interprété comme du YAML en base 60 dans certains cas limites ; le générateur met toujours les mappages de ports entre guillemets.
  • Secrets codés en dur. Les secrets écrits directement dans compose.yml finissent dans Git. Placez-les dans un env_file ou dans le gestionnaire de secrets de la plateforme.
  • depends_on sans condition. Un depends_on: [db] simple attend le démarrage du conteneur, pas que le service soit prêt. Utilisez condition: service_healthy et ajoutez un healthcheck à la dépendance.

Questions fréquentes

La Compose Specification actuelle (alignée sur Docker Compose V2). Le fichier omet la clé version:, c’est ainsi que s’écrivent les fichiers Compose modernes. Il fonctionne avec Docker Compose V2.22 et plus récent.

Pas via le formulaire dans cette version. Le générateur se concentre sur les définitions de services avec image, ports et volumes. Vous pouvez ajouter réseaux, variables d’environnement, healthchecks et autres clés au YAML généré à la main avant de l’utiliser.

Non, cet outil est dédié à compose.yml. Pour les Dockerfiles, utilisez le Générateur de Dockerfile, qui gère le choix de l’image de base et l’ordre des instructions COPY/RUN pour cinq technologies.

Non. Les définitions de services servent uniquement à construire le YAML sur cette page. Elles ne sont ni enregistrées, ni téléversées, ni partagées.

Outils similaires

Outil disponible dans d’autres langues