Ich bin ein Docker-Container mit dem folgenden Befehl:Zugriffsumgebungsvariablen in Docker geleitet von Supervisor Kind-Prozess laufen
docker run -it -e CustomEnvVariable="val123" -p 80:80 imagename
Das Bild hat supervisor mit der folgenden conf-Datei für meine Anwendung ausgeführt wird:
[program:myapp]
command=/usr/bin/dotnet /root/myapp/myapp.dll
directory=/root/myapp/
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=ASPNETCORE__ENVIRONMENT=Production
stopsignal=INT
user=root
Wie kann ich innerhalb von myapp auf CustomEnvVariable
zugreifen, nachdem Supervisor es startet?
Ich habe versucht, den folgenden Wert in der conf
Datei environment
Wert:
environment=ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable=%(ENV_CustomEnvVariable)s
aber ich würde diesen Fehler erhalten, wenn Supervisor Neustart:
Restarting supervisor: Error:
Format string 'ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable="%(ENV_CustomEnvVariable)s"'
for 'environment' contains names which cannot be expanded
Mehr Informationen:
Supervisor verwenden Version: 3.0 (Installation über apt-get install supervisor -y
).
Ich habe bestätigt, dass der Wert CustomEnvVariable
den Container erreicht, indem Sie die Ausgabe von echo $CustomEnvVariable
überprüfen.
ich zur Verfügung aus der App einen schnellen Scan aller Umgebungsvariablen haben, hier sind die Ergebnisse:
{
"LC_ADDRESS": "",
"SUPERVISOR_PROCESS_NAME": "myapp",
"LC_MONETARY": "",
"LC_MESSAGES": "",
"LC_NAME": "",
"SUPERVISOR_ENABLED": "1",
"SUPERVISOR_SERVER_URL": "unix:///var/run/supervisor.sock",
"LC_COLLATE": "",
"ASPNETCORE__ENVIRONMENT": "Production",
"SUPERVISOR_GROUP_NAME": "myapp",
"LANG": "",
"LC_NUMERIC": "",
"LANGUAGE": "",
"LC_PAPER": "",
"LC_IDENTIFICATION": "",
"LC_CTYPE": "",
"LC_MEASUREMENT": "",
"TERM": "xterm",
"LC_TIME": "",
"LC_ALL": "",
"PATH": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
"LC_TELEPHONE": "",
"PWD": "/"
}
Haben Sie überprüft, dass es definitiv gesetzt/weitergegeben wird (durch Echo?). Probieren Sie es auch einmal aus, anstatt es auf dem "Docker Run ..." zu dotieren. – johnharris85
Bestätigt, dass wenn ich bash innerhalb des Containers starte, der Wert über 'docker run -e' übergeben wird, wenn ich' echo $ CustomEnvVariable' ausführe. So kommt es sicher zum Container. – Omar
Welche Version des Supervisors? – johnharris85