Die Syntaxregeln für .env-Dateien zu Anführungszeichen, Kommentaren, leeren Werten und mehrzeiligen Schlüsseln, wo dotenv und Docker Compose sich unterscheiden, plus ein Linter, in den du eine Datei einfügen kannst.
Eine .env-Datei ist reiner Text mit einem KEY=value-Paar pro Zeile. Leerzeilen werden übersprungen, Zeilen mit # am Anfang sind Kommentare. Setze einen Wert in Anführungszeichen, wenn er Leerzeichen am Anfang oder Ende, ein #-Zeichen oder Zeilenumbrüche enthält. Es gibt keinen einheitlichen Standard, daher lesen dotenv für Node und Docker Compose einige Sonderfälle unterschiedlich.
Wie dotenv typische Zeilen liest
Die meisten kaputten .env-Dateien scheitern an denselben paar Details: einem # im Passwort, einem privaten Schlüssel, der über mehrere Zeilen eingefügt wurde, oder einem Anführungszeichen, das nie geschlossen wird. Füge deine Datei in den Linter ein, um zu sehen, was dotenv für jeden Schlüssel liest und wo Docker Compose es anders liest.
Nein. Das Format ist aus Variablenzuweisungen in der Shell entstanden, und jeder Loader dokumentiert seine eigenen Regeln. Das dotenv-Paket für Node und Docker Compose veröffentlichen beide ihre Regeln, und bei den Grundlagen sind sie sich einig: KEY=value-Zeilen, #-Kommentare und Werte in Anführungszeichen.
Nur wenn du sie brauchst. Anführungszeichen sind nötig bei Werten mit einem #-Zeichen, Leerzeichen am Anfang oder Ende oder Zeilenumbrüchen. Verwende in Compose einfache Anführungszeichen, wenn ein $ literal bleiben soll, denn Werte in einfachen Anführungszeichen werden dort nicht interpoliert.
Setze ihn in doppelte Anführungszeichen und behalte die echten Zeilenumbrüche bei, was dotenv ab Version 15.0.0 unterstützt. Du kannst ihn auch in einer Zeile lassen und an jeder Umbruchstelle \n schreiben, denn doppelt gequotete Werte machen aus \n einen Zeilenumbruch.
Ja, mit Vorsicht. dotenv behandelt ein # ohne Anführungszeichen als Beginn eines Kommentars. Docker Compose tut das nur, wenn vor dem # ein Leerzeichen steht, daher ergibt KEY=a#b in Compose a#b, in dotenv aber a. Lass zur Sicherheit vor Inline-Kommentaren ein Leerzeichen.
Nein. Standardmäßig ändert dotenv nie eine Variable, die schon in der Umgebung existiert, sodass ein Wert aus deiner Shell oder vom Host gewinnt. Setze die Option override auf true, wenn die Datei sie ersetzen soll.
Dieselbe Zeile, gelesen von zwei Loadern
Dieselben Schlüssel wie in der echten Datei, sichere Platzhalterwerte, Kommentare zu jeder Gruppe. Committe diese Datei, nie die echte .env.
config() liest standardmäßig .env aus dem aktuellen Arbeitsverzeichnis. Werte, die schon in der Umgebung stehen, bleiben unverändert.
Füge deine .env-Datei ein
Was dotenv aus jeder Zeile liest
Zeile
Schlüssel
Wert
Hinweise
(leerer String)
{n} Schlüssel gelesen, {v} mit Hinweisen
Noch keine Schlüssel gefunden.
Kein =-Zeichen, daher wird diese Zeile ignoriert.
Der Schlüssel enthält ein Leerzeichen. Entferne es, sonst wird die Zeile nicht wie erwartet gelesen.
Kein portabler Name. Shells erwarten Buchstaben, Ziffern und Unterstriche, nicht mit einer Ziffer am Anfang.
Das Anführungszeichen wird nie geschlossen, daher kann der Rest der Datei in diesem Wert verschwinden.
Auch in Zeile {n} gesetzt. Behalte nur einen, damit niemand raten muss, welcher gewinnt.
dotenv stoppt beim #, aber Docker Compose behält es, weil kein Leerzeichen davor steht. Setze den Wert in Anführungszeichen.
Enthält $. Docker Compose expandiert es; reines dotenv behält es so, wie es geschrieben ist.
Erstreckt sich innerhalb von Anführungszeichen über mehrere Zeilen.
Kostenlos starten · Keine Kreditkarte nötig