如何在supervisord中设置环境变量

时间:2018-05-07 18:00:30

标签: docker supervisord aws-kms

我有一个像这样的监督文件

[program:decrypt]
command=export KEYTOKEN=$(aws kms decrypt --ciphertext-blob fileb://<(echo %(ENV_TOKENENC)s | base64 -d) --output text --query Plaintext --region %(ENV_REGION)s | base64 -d )

我将环境ENV_TOKENENC,ENV_REGION传递给容器,我可以回显这些变量并确认docker容器正在获取它们,同时解密kms值的命令也可以。但是当我把kms decrypt命令放在监督中时文件它抛出错误说(&#39; ENV_REGION&#39;)&amp;(&#39; ENV_CONSULTOKENENC&#39;)无法扩展。 我是否在supervisord文件中输入正确的值?

1 个答案:

答案 0 :(得分:0)

设置环境变量很简单,如果您将其设置为常量值:

(Deadlock found when trying to get lock; try restarting transaction)

或者,开销较小:

[program:decrypt]
command=/usr/bin/env foo=bar baz=qux /path/to/something ...

但是,动态生成该变量的值需要一个shell:

environment=foo="bar",baz="qux"
command=/path/to/something ...

请注意,这里实际上并不需要[program:decrypt] command=/bin/sh -c 'foo=$(generate-bar) /path/to/something' ,因为export作为单个命令的一部分导出var=value something,在执行var期间具有值value