我跑碼頭工人,容器下面的命令:訪問環境變量來自上司的子進程運行
docker run -it -e CustomEnvVariable="val123" -p 80:80 imagename
圖像具有supervisor與我的應用程序下面的conf文件運行:
[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
管理員啓動後,如何從myapp中訪問CustomEnvVariable
?
我試圖在conf
文件environment
值以下值:
environment=ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable=%(ENV_CustomEnvVariable)s
但在重新啓動的主管時,我會收到此錯誤:
Restarting supervisor: Error:
Format string 'ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable="%(ENV_CustomEnvVariable)s"'
for 'environment' contains names which cannot be expanded
一些更多的信息:
使用監督員版本:3.0(通過apt-get install supervisor -y
安裝)。
我確認CustomEnvVariable
的值是通過檢查echo $CustomEnvVariable
的輸出達到容器的。
我做了所有的環境變量可從應用程序快速掃描,這裏的結果:
{
"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": "/"
}
你是否檢查過它是否被設置/傳入(通過回顯它?)。也可以嘗試單引號,而不是在「碼頭運行...」上加倍。 – johnharris85
確認當我在容器中運行bash時,當執行'echo $ CustomEnvVariable'時,通過'docker run -e'獲取傳入的值。所以它肯定會進入容器。 – Omar
什麼版本的主管? – johnharris85