我有一个像这样的监督文件
[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文件中输入正确的值?
答案 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