【问题标题】:Using docker environment -e variable in supervisor在主管中使用 docker 环境 -e 变量
【发布时间】:2015-09-13 05:02:41
【问题描述】:

我一直在尝试通过 -e 选项将环境变量传递给 Docker 容器。该变量旨在用于容器内的主管脚本。不幸的是,变量没有得到解决(即它们保留为 instance$INSTANCENAME)。我试过${var} 和"${var}",但这也无济于事。有什么我可以做的吗?或者这是不可能的?

docker 运行命令:

sudo docker run -d -e "INSTANCENAME=instance-1" -e "FOO=2" -v /var/app/tmp:/var/app/tmp -t myrepos/app:tag

和主管文件:

[program:app]
command=python test.py --param1=$FOO
stderr_logfile=/var/app/log/$INSTANCENAME.log
directory=/var/app
autostart=true

【问题讨论】:

    标签: python docker environment-variables supervisord


    【解决方案1】:

    该变量正在传递给您的容器,但主管不允许在配置文件中使用这样的环境变量。

    您应该查看supervisor documentation,特别是有关字符串表达式的部分。例如,对于command 选项:

    请注意,command 的值可能包含 Python 字符串表达式,例如/path/to/programname --port=80%(process_num)02d 可能会在运行时扩展为 /path/to/programname --port=8000。

    字符串表达式根据包含键 group_name、host_node_name、process_num、program_name、此处(supervisord 配置文件的目录)以及所有以 ENV_ 为前缀的 supervisord 环境变量的字典进行评估.

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2012-10-05
      • 2017-12-01
      • 1970-01-01
      • 2015-04-02
      相关资源
      最近更新 更多