【发布时间】:2014-11-04 20:53:26
【问题描述】:
我正在尝试从 docker run 命令向主管传递一个变量,以便它可以执行具有变量值的脚本。我们需要在运行时设置它,这样每个开发人员都可以在 rabbitmq 中拥有自己的队列,这样我们就不会在测试期间破坏彼此的队列。
Docker 运行命令:
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: `.'
看起来环境变量不在上下文中。
【问题讨论】:
标签: docker rabbitmq supervisord