Supervisord 在命令中使用环境变量

Supervisord using environment variables in command

我的主管配置文件

environment=USER=%(ENV_FLOWER_USER_NAME),PASS=%(ENV_FLOWER_PASSWORD)
command=/usr/local/opt/python/bin/flower --basic_auth=%(ENV_USER}:%(ENV_PASS)

当我启动 supervisord 时,我收到以下错误

Restarting supervisor: Error: Format string 'USER=%(ENV_FLOWER_USER_NAME),PASS=%(ENV_FLOWER_PASSWORD)' for 'environment' is badly formatted

有什么想法吗?

看起来您在格式化环境变量名称时缺少前导 s。这里是 sample config file.

你应该使用

environment=USER=%(ENV_FLOWER_USER_NAME)s,PASS=%(ENV_FLOWER_PASSWORD)s
command=/usr/local/opt/python/bin/flower --basic_auth=%(ENV_USER)s:%(ENV_PASS)s

可读性

environment=
    USER=%(ENV_FLOWER_USER_NAME)s,
    PASS=%(ENV_FLOWER_PASSWORD)s

command=/usr/local/opt/python/bin/flower 
            --basic_auth=%(ENV_USER)s:%(ENV_PASS)s

如果此表单的名称带有 %(ENV_NAME)s 前缀,请使用变量。

docker-compose.yml

environment:
  ENVIRONMENT: production
  PORT: 8011 # port uwsgi

supervisord.conf

[program:uwsgi]
command=uwsgi --ini uwsgi.ini --http :%(ENV_PORT)s

祝好:)