Valider Docker Compose et fichiers `.env` en ligne

Valider Docker Compose et fichiers `.env` en ligne

Vérifiez la structure de vos `compose.yml` et `.env` avant de lancer `docker compose up` — sans installer d'outils.

16.07.2026
9 min de lecture
Partager cet article:
docker-compose
env
DevOps
validate
yaml
Tutoriel

Pourquoi valider Compose et `.env` avant le deploy ?

Un `docker compose up` qui échoue à cause d'une clé `services` mal indentée ou d'une ligne `.env` sans `=` fait perdre du temps sur une machine neuve, en CI ou pendant un onboarding. Un contrôle rapide de la structure avant de lancer la stack attrape les fautes de frappe évidentes avant que Docker ne s'en plaigne. Sur FastMinify, vous pouvez valider un fichier Docker Compose en ligne et valider un fichier `.env` en ligne — 100 % dans le navigateur, sans installer Docker ni Node. Le cluster complet est sur le hub d'outils DevOps, à côté de Terraform, du Dockerfile et du HCL.

Erreurs de structure Compose attrapées avant `docker compose up`
Lignes `.env` invalides (sans `=`, clé illégale) repérées tôt
Clés dupliquées et guillemets non fermés signalés dans le `.env`
Alerte quand une clé ressemble à un secret (`SECRET`, `TOKEN`…)
Même hub que Dockerfile, Terraform et HCL

Erreurs fréquentes et workflow avant deploy

Ce que la validation attrape souvent

Quelques fautes reviennent constamment. Les corriger avant `docker compose up` évite des messages Docker cryptiques.

Indentation YAML incohérente sous `services` (erreur de parse)
`services` écrit comme une liste au lieu d'un mapping
Service sans `image` ni `build` — rien à démarrer
Ligne `.env` sans `=` (souvent un commentaire sans `#`)
Clé `.env` dupliquée : la dernière valeur écrase la précédente
Secrets et bonnes pratiques `.env`

Le validateur signale les clés qui ressemblent à des secrets (`PASSWORD`, `API_KEY`, `SECRET`, `TOKEN`), mais ce n'est qu'un rappel — pas un scan de secrets. La vraie discipline reste de ne pas committer les `.env`.

Ajouter `.env` au `.gitignore` et committer un `.env.example` sans valeurs
Quoter les valeurs contenant espaces ou caractères spéciaux
Utiliser des secrets Docker / le gestionnaire de la plateforme en prod
Relier le Dockerfile du service via le guide lint et format Dockerfile en ligne
Formater et valider l'IaC associée — voir Terraform et HCL en ligne
Parcourir le hub DevOps FastMinify pour tout le cluster

Compose vs `.env` : deux intentions

Choisir le bon validateur

Compose et `.env` se complètent : l'un décrit la stack, l'autre injecte la config. En revue, validez les deux avant de lancer la stack.

Ce qui est vérifié

format:Compose : YAML + `services` + image/build
validate:`.env` : lignes KEY=VALUE, clés, guillemets
minify:`docker compose config` : rendu réel

Quand l'utiliser

format:Avant `docker compose up`
validate:Avant de partager ou charger un `.env`
minify:En CI ou sur un environnement de test
Ordre recommandé

Un enchaînement simple évite de découvrir les erreurs au moment du deploy.

Valider le `.env` (syntaxe des variables)
Valider le `compose.yml` (structure des services)
Vérifier le Dockerfile référencé par un `build:`
Lancer `docker compose config` pour le rendu final
Puis `docker compose up` sur un environnement de test

Quand l'outil navigateur suffit

Cas d'usage fréquents

Pas besoin de Docker installé pour vérifier trois erreurs sur un `compose.yml` reçu par message.

Vérifier un `compose.yml` collé depuis un ticket ou un README
Valider un `.env` avant de le partager avec un collègue
Préparer un exemple pédagogique ou un gist public
Débloquer un `docker compose up` qui échoue sur une machine neuve
Revue express d'une config Compose vendor / template

Limites : ce que le navigateur ne remplace pas

`docker compose config` et le runtime réel

Dès que vous devez résoudre l'interpolation `${VAR}`, fusionner plusieurs fichiers Compose (`-f`), ou vérifier qu'une image existe, la CLI Docker et le démon restent obligatoires.

`docker compose config` pour le rendu final avec variables résolues
Merge de plusieurs fichiers (`compose.yml` + `compose.override.yml`)
Vérifier la disponibilité des images sur le registre
Tester les réseaux, volumes et dépendances entre services
Secrets : gestionnaire de la plateforme / Docker secrets, jamais en ligne
Fichiers voisins

Un service arrive souvent avec un Dockerfile, du HCL Terraform et un `.env`. Valider Compose et `.env` + linter le Dockerfile + formater le HCL couvre le parcours DevOps quotidien.

Valider le `.env` avant le `compose.yml`
Linter le Dockerfile référencé par un `build:`
Formater / valider le HCL Terraform associé
Garder une convention d'indentation commune dans le dépôt
Traiter la config comme source Git, versionnée et relue

CLI et écosystème

Outils de référence en local

La CLI Docker et quelques linters restent le standard. Les outils FastMinify sont un complément rapide pour l'exploration et les one-shots.

docker compose config

Rend le fichier final avec variables résolues et signale les erreurs de spec.

Avantages :
Résout l'interpolation `${VAR}` depuis le `.env`
Fusionne les fichiers `-f` et les overrides
Référence officielle de la spec Compose
Inconvénients :
Nécessite Docker installé
Moins pratique pour un snippet hors repo

dotenv-linter

Linter `.env` rapide (Rust) avec règles sur les clés et les valeurs.

Avantages :
Détecte doublons, clés non triées, valeurs suspectes
Intégrable en pre-commit et en CI
Corrige automatiquement certains problèmes
Inconvénients :
À installer localement
Ne valide pas le fichier Compose

yamllint

Linter YAML générique utile pour l'indentation et le style.

Avantages :
Règles d'indentation et de style configurables
Utile au-delà de Compose (CI, K8s…)
Intégration éditeur et pre-commit
Inconvénients :
Ne connaît pas la sémantique Compose
Configuration à maintenir par équipe

Anatomie d'un `compose.yml` et d'un `.env`

Structure d'un fichier Compose

Un fichier Compose moderne est un unique document YAML avec une clé racine `services` obligatoire. Chaque service devrait déclarer une `image` ou un bloc `build`. Les autres clés racine attendues sont `networks`, `volumes`, `secrets`, `configs`, `name` et l'historique `version`. La clé `version` est désormais optionnelle dans la spec Compose actuelle, mais reste tolérée.

Racine = un seul document YAML (pas de séparateurs `---` multiples)
`services` obligatoire et sous forme de mapping (pas une liste)
Chaque service : `image:` ou `build:` pour être démarrable
Clés racine connues : services, networks, volumes, secrets, configs, name, version
L'indentation YAML fait tout : deux espaces cohérents, jamais de tabulation
Structure d'un fichier `.env`

Un `.env` est une liste de paires `KEY=VALUE`, une par ligne. Les lignes vides et les commentaires (`#`) sont ignorés, et le préfixe `export ` est toléré. Les noms de clé suivent la convention shell (lettres, chiffres, underscore, sans commencer par un chiffre). Une valeur avec des espaces doit être entre guillemets pour éviter les surprises.

Une paire `KEY=VALUE` par ligne, pas de `=` = ligne invalide
Commentaires `#` et lignes vides ignorés
Clé valide : `^[A-Za-z_][A-Za-z0-9_]*$` (pas d'espace ni de tiret)
Guillemets `"` ou `'` à fermer ; valeur avec espaces à quoter
`export FOO=bar` accepté, mais Compose ne lit que `FOO=bar`
Ce que la validation navigateur ne remplace pas

Ces deux validateurs font des contrôles <strong>structurels</strong>, pas une validation complète de la spec Compose ni un scan de secrets. Ils ne résolvent pas l'interpolation de variables (`${VAR}`), ne vérifient pas qu'une image existe sur un registre, et ne lancent pas `docker compose up`. Pour la vérité runtime, `docker compose config` et le démon Docker restent la référence.

Pas de validation du schéma Compose complet (types de chaque champ)
Pas de résolution de `${VARIABLE}` entre `.env` et `compose.yml`
Pas de scan de secrets avancé — seulement un motif de nom de clé
Pas de connexion à un registre ni de `docker build`
Ne jamais coller de vrais secrets dans un textarea public

Deux validations : Compose et `.env`

Valider Docker Compose (structure YAML)

Le validateur parse le YAML, vérifie qu'il y a un seul document, une racine de type mapping et une clé `services`. Il signale les services sans `image` ni `build` et les clés racine inconnues. Essayez le validateur Docker Compose en ligne.

Erreur YAML localisée sur la ligne fautive
Erreur si `services` manque ou n'est pas un mapping
Avertissement si un service n'a ni `image` ni `build`
Info sur les clés racine hors liste connue
Contrôle structurel — pas la spec Compose complète
Valider un fichier `.env` (parser KEY=VALUE)

Le validateur `.env` lit chaque ligne, remonte celles sans `=` ou avec une clé illégale, détecte les guillemets non fermés, les clés dupliquées et les valeurs non quotées contenant des espaces. Utilisez le validateur `.env` en ligne avant de partager un fichier d'exemple.

Ligne sans `=` → erreur `KEY=VALUE` attendu
Clé invalide (espace, tiret, chiffre initial) → erreur
Guillemet non fermé → erreur
Clé dupliquée → avertissement avec la ligne d'origine
Espaces dans une valeur non quotée → avertissement
Dockerfile et Terraform du même projet

Un service arrive rarement seul. Enchaînez avec le linter Dockerfile en ligne et le formateur Terraform / HCL en ligne pour couvrir toute la config d'infra.

Linter et formater le Dockerfile du même service
Formater et valider le HCL Terraform associé
Même hub DevOps pour un parcours unique
Utile avant un premier `docker compose up` local
Garder les secrets hors du dépôt et hors des outils en ligne

Conclusion

Valider la structure de vos `compose.yml` et `.env` avant `docker compose up` évite des échecs de deploy sur des fautes de frappe. Utilisez le navigateur pour un premier filtre structurel, puis `docker compose config` et le démon Docker pour la vérité runtime. Enchaînez avec le Dockerfile et le HCL Terraform sur le même hub DevOps.

Validez votre Compose ou votre `.env` maintenant

Valider le `.env` avant le `compose.yml`
Corriger tôt l'indentation YAML et les services sans image/build
Ajouter `.env` au `.gitignore` et committer un `.env.example`
Utiliser `docker compose config` pour le rendu final avec variables
Ne jamais coller de vrais secrets dans un outil en ligne
Partager cet article
Partager cet article: