Les règles de syntaxe du fichier .env pour les guillemets, les commentaires, les valeurs vides et les clés multilignes, les points où dotenv et Docker Compose divergent, plus un linter dans lequel coller votre fichier.
Un fichier .env est du texte brut avec une paire KEY=value par ligne. Les lignes vides sont ignorées et les lignes commençant par # sont des commentaires. Mettez une valeur entre guillemets quand elle contient des espaces aux extrémités, un signe # ou des retours à la ligne. Il n'existe pas de norme unique : dotenv pour Node et Docker Compose interprètent donc quelques cas limites différemment.
Comment dotenv lit les lignes courantes
La plupart des fichiers .env cassés échouent sur la même poignée de détails : un # dans un mot de passe, une clé privée collée sur plusieurs lignes ou un guillemet jamais refermé. Collez votre fichier dans le linter pour voir ce que dotenv lirait pour chaque clé, et où Docker Compose le lirait autrement.
Non. Le format est issu des affectations de variables du shell et chaque outil de chargement documente ses propres règles. Le package dotenv pour Node et Docker Compose publient chacun les leurs, et ils s'accordent sur l'essentiel : des lignes KEY=value, des commentaires # et des valeurs entre guillemets.
Seulement quand c'est nécessaire. Les guillemets sont obligatoires pour les valeurs contenant un signe #, des espaces au début ou à la fin, ou des retours à la ligne. Utilisez des guillemets simples dans Compose si vous voulez qu'un $ reste littéral, car les valeurs entre guillemets simples n'y sont pas interpolées.
Entourez-la de guillemets doubles et gardez les vrais retours à la ligne, ce que dotenv prend en charge depuis la version 15.0.0. Vous pouvez aussi la garder sur une ligne et écrire \n à chaque saut, puisque les valeurs entre guillemets doubles transforment \n en retour à la ligne.
Oui, avec prudence. dotenv considère un # sans guillemets comme le début d'un commentaire. Docker Compose ne le fait que si un espace précède le #, donc KEY=a#b donne a#b dans Compose mais a dans dotenv. Laissez un espace avant les commentaires en ligne pour être tranquille.
Non. Par défaut, dotenv ne modifie jamais une variable qui existe déjà dans l'environnement : une valeur définie par votre shell ou votre hébergeur l'emporte. Passez l'option override à true si vous voulez que le fichier les remplace.
La même ligne lue par deux outils de chargement
Les mêmes clés que le vrai fichier, des valeurs fictives sans risque, des commentaires qui expliquent chaque groupe. Commitez celui-ci, jamais le vrai .env.
config() lit par défaut le .env du répertoire de travail courant. Les valeurs déjà présentes dans l'environnement restent inchangées.
Collez votre fichier .env
Ce que dotenv lit sur chaque ligne
Ligne
Clé
Valeur
Notes
(chaîne vide)
{n} clés lues, dont {v} avec des notes
Aucune clé trouvée pour l'instant.
Pas de signe =, cette ligne est donc ignorée.
La clé contient un espace. Supprimez-le, sinon la ligne ne sera pas lue comme prévu.
Nom non portable. Les shells attendent des lettres, chiffres et underscores, sans chiffre au début.
Le guillemet n'est jamais refermé : le reste du fichier risque d'être absorbé dans cette valeur.
Aussi définie à la ligne {n}. Gardez-en une seule pour que personne n'ait à deviner laquelle l'emporte.
dotenv s'arrête au #, mais Docker Compose le conserve car aucun espace ne le précède. Mettez la valeur entre guillemets.
Contient $. Docker Compose l'interprète ; dotenv seul le garde tel quel.
S'étend sur plusieurs lignes entre guillemets.
Commencer gratuitement · Sans carte bancaire