在pipe理员subprocess中运行docker run中传递的环境variables

我使用以下命令运行docker容器:

docker run -it -e CustomEnvVariable="val123" -p 80:80 imagename 

该图像具有运行与我的应用程序的以下conf文件的主pipe:

 [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 

主pipe启动后如何从myapp中访问CustomEnvVariable

我在conf文件environment值中尝试了以下值:

 environment=ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable=%(ENV_CustomEnvVariable)s 

但重启主pipe时我会收到这个错误:

 Restarting supervisor: Error: Format string 'ASPNETCORE__ENVIRONMENT=Production,CustomEnvVariable="%(ENV_CustomEnvVariable)s"' for 'environment' contains names which cannot be expanded 

一些更多的信息:

使用pipe理员版本:3.0(通过apt-get install supervisor -y )。

我确认了CustomEnvVariable的值是通过检查echo $CustomEnvVariable的输出到达容器。

我做了一个快速扫描应用程序可用的所有环境variables,这里是结果:

 { "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以上版本中使用, 就像这个github问题一样 。