envsubst Befehl, stecken in einem Behälter
Habe ich eine Anforderung, dass bevor eine Anwendung ausgeführt wird, ein Teil Lesen muss die Umgebungs-variable. Für diese habe ich folgende docker-Datei
FROM nodesource/jessie:0.12.7
# install gettext for envsubst
RUN apt-get update
RUN apt-get install -y gettext-base
# cache package.json and node_modules to speed up builds
ADD package.json package.json
RUN npm install
# Add source files
ADD src src
# Substiture value for backend endpoint env var
RUN envsubst < src/js/envapp.js > src/js/app.js
ADD node_modules node_modules
EXPOSE 8000
CMD ["npm","start"]
Den oben envsubst Zeile liest (Lesen sollte) eine env-variable $MYENV
und ersetzt es. Aber wenn ich die Datei öffnen app.js seine leere.
Ich habe überprüft, ob die Umgebungsvariable vorhanden ist, in den Behälter und es funktioniert. Irgendeinem Grund der Wert ist nicht zu Lesen, und ersetzt?
Ich habe auch versucht, den gleichen Befehl in den container und es funktioniert. Es funktioniert nur nicht, wenn ich das Bild
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wahrscheinlich, weil
$MYENV
ist nicht verfügbar fürenvsubst
beim ausführen der Bild.Jeden Befehl AUSFÜHREN läuft auf seiner eigenen Schale.
Aus dem Andockfenster Dokumentationen:
Müssen Sie die Quelle Ihres Profils, zum Beispiel, wenn die
$MYENV
Umgebungsvariable ist in der.bashrc
- Datei, können Sie ändern Ihre Dockerfile wie diese:Schlage ich vor, dass da Ihre sind mithilfe von Knoten verwenden Sie die npm envsub Modul.
Dieses Modul ist gut getestet und entwickelt mit docker daran.
Es vermeidet die Notwendigkeit, sich auf andere Abhängigkeiten, wenn Sie bereits den kompletten Knoten arsenal an Ihren Fingerspitzen.
envsub wird beschrieben als
Ich bin der Autor des Pakets. Ich denke, Sie werden es genießen.