访问从主管子进程传入 docker 运行 的环境变量
Access environment variables passed in docker run from supervisor child process
我是 运行 一个 docker 容器,使用以下命令:
docker run -it -e CustomEnvVariable="val123" -p 80:80 imagename
图像具有 supervisor 运行 我的应用程序的以下配置文件:
[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
但是我在重启 supervisor 时会收到这个错误:
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
安装)。
我通过检查 echo $CustomEnvVariable
的输出确认 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": "/"
}
语法正确,但环境扩展仅在 supervisor > 3.2 版本中可用,as per this github issue。
我是 运行 一个 docker 容器,使用以下命令:
docker run -it -e CustomEnvVariable="val123" -p 80:80 imagename
图像具有 supervisor 运行 我的应用程序的以下配置文件:
[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
但是我在重启 supervisor 时会收到这个错误:
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
安装)。
我通过检查 echo $CustomEnvVariable
的输出确认 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": "/"
}
语法正确,但环境扩展仅在 supervisor > 3.2 版本中可用,as per this github issue。