Wie bekomme ich die richtige Formatierung von Docker-Compose Multiline-Umgebungsvariablen?
Lesezeit: 5 Minuten
dzhi
Ich machte einen docker-compose.yaml für meinen WordPress-Stack mit offiziellem WordPress-Image und ich möchte automatisch einige benutzerdefinierte Konstanten in die wp-config.php-Datei einfügen.
Wenn ich den offiziellen Bildanweisungen folge, lande ich damit:
Alles funktioniert, aber meine OCD kann nicht ruhen, bis ich herausgefunden habe, warum die generierte wp-config.php so aussieht: WORDPRESS_CONFIG_EXTRA Konstanten in einer Zeile verbunden:
Kann mir jemand erklären, wie mehrzeilige Umgebungsvariablen in der Docker-Compose-Datei behandelt werden, insbesondere für WORDPRESS_CONFIG_EXTRA Variable?
Ich habe es versucht WORDPRESS_CONFIG_EXTRA: | und WORDPRESS_CONFIG_EXTRA: |- aber keiner hat so funktioniert, wie ich denke, dass es sollte.
Anton
In Ihrem ersten Beispiel ist das letzte Element der ersten Sequenz des Dokuments a einfacher Skalar (dh ohne einfache oder doppelte Anführungszeichen), die sich über mehrere Zeilen erstreckt. In einem einfachen Skalar werden Zeilenumbrüche durch Leerzeichen ersetzt (und leere Zeilen durch einen Zeilenumbruch).
Wenn Sie also Zeilenumbrüche innerhalb dieses Elements wünschen, sollten Sie Folgendes verwenden (nur den relevanten Teil anzeigen):
Verwenden |- Anstatt von | schließt den letzten Zeilenumbruch aus diesem Element aus. Was du versucht hast ( WORDPRESS_CONFIG_EXTRA: | ) ist etwas völlig anderes, da Sie das einzelne skalare Element in eine Zuordnung mit einem einzelnen Schlüssel-Wert-Paar aufteilen.
Obwohl das obige als String-Werte mit eingebetteten Zeilenumbrüchen geladen wird, kann es dennoch passieren, dass die Verarbeitung durch Docker-Compose, insbesondere das Übergeben von Dingen an eine Shell, die Zeilenumbrüche in Leerzeichen umwandeln kann.
Ich habe auch Programme verwendet, bei denen Sie möglicherweise den Zeilenumbruch für die “folgende” Verarbeitung maskieren müssen, indem Sie jede Zeile mit einem Backslash beenden (\)
Genial! Vielen Dank @Anthon
– dschi
8. November 2018 um 10:47 Uhr
Wissen Sie vielleicht, wie man diese mehrzeilige Variable in .env einfügen würde? Alles, was ich damit versucht habe, ist fehlgeschlagen :/
– dschi
8. November 2018 um 17:50 Uhr
Außerdem verbieten die Götter, dass Sie Dollarzeichen einfügen müssen. 🙄
– Patricknelson
10. Juni 2020 um 3:14 Uhr
Ich bevorzuge eine etwas andere Syntax und versuche es mit >. Dies. Die Lösung funktioniert ziemlich gut, wenn Sie einen JSON in Ihren Umgebungsvariablen benötigen. Es gibt viele Möglichkeiten, mehrzeilige Zeichenfolgen in YAML zu haben.