我正在尝试通过docker run命令将一个变量传递给supervisor,以便它可以使用该变量值执行脚本。我们需要在运行时设置这个变量,以便每个开发者都可以在rabbitmq中拥有自己的队列,这样我们就不会在测试期间互相干扰了。
docker run命令:
docker CMD 语句(经过查看文档,我知道为什么会出错,无法提供任意参数:http://supervisord.org/running.html):
主管配置:
剧本主管开始执行:
这是错误:
“…如果有人知道如何实现这个,我将非常感激,并且当我得到启示时会跳起欢快的舞蹈。”
“谢谢!”
“[更新]我已经更新了相关部分,使用了答案中的建议。此外,我包含了手动运行脚本后(使用nsenter连接到正在运行的容器后)的结果。”
看起来环境变量不在上下文中。
docker run命令:
docker run -i -p 5672:5672 -p 9200:9200 -p 9300:9300 -p 9001:9001 -p 15672:15672 -e "PARENT_HOSTNAME=MACHINED58" --rm --name shovel -t dtwill/blkmesa:shovel
docker CMD 语句(经过查看文档,我知道为什么会出错,无法提供任意参数:http://supervisord.org/running.html):
CMD /usr/bin/supervisord
主管配置:
[program:update_rabbit_config]
command=/src/update_rabbit_config.sh
redirect_stderr=true
priority=200
startsecs=3
剧本主管开始执行:
machineName=$PARENT_HOSTNAME
echo machine name = $machineName
sed -i .bak "s/|machine|/'$machineName'/" /etc/rabbitmq/rabbitmq.config
这是错误:
INFO exited: update_rabbit_config (exit status 1; not expected)
“…如果有人知道如何实现这个,我将非常感激,并且当我得到启示时会跳起欢快的舞蹈。”
“谢谢!”
“[更新]我已经更新了相关部分,使用了答案中的建议。此外,我包含了手动运行脚本后(使用nsenter连接到正在运行的容器后)的结果。”
root@1e2aeaa3dfb8:/src# bash update_rabbit_config.sh
machine name =
sed: -e expression #1, char 1: unknown command: `.'
看起来环境变量不在上下文中。
CMD /usr/bin/supervisord $PARENT_HOSTNAME
中移除了$PARENT_HOSTNAME
吗?你需要这样做,因为 PARENT_HOSTNAME 将从环境变量中读取,而不是从 supervisord 参数中读取。 - Thomasleveil