2016-07-24 21 views
1

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": "/" 
} 
+0

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

+0

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

+0

Welche Version des Supervisors? – johnharris85

Antwort

1

Die Syntax ist richtig, aber Umwelt Erweiterung ist in der Version> 3.2 Supervisor nur verfügbar, as per this github issue.

+1

FYI, bei weiterer Verwendung scheint es, dass die Umgebungsvariablen für den Kindprozess zugänglich sind, ohne dass die Variablenexpansion wie in meiner Antwort beschrieben durchgeführt werden muss. – Omar