如何访问由docker运行的环境变量,从容器内的monit控制进程运行

时间:2015-04-16 20:08:29

标签: bash docker monit

我正在使用monit来启动(和监视)容器内的多个进程。不幸的是,monit以非常简化的环境运行进程,因此来自docker run --env ...的任何东西都不会被monit启动的进程看到。在其他环境中,我只需确保在此过程中提供/etc/environment~/.bash_profile,以便进行环境设置。

但是docker run --env没有任何等效的AFAIK。除了必须在monit周围有一个包装器,创建monit配置文件或创建/etc/environment有没有办法访问来自docker的这些环境变量?

1 个答案:

答案 0 :(得分:0)

只是在这里思考。在运行monit之前,您可以收集它有权访问的环境变量。例如:

env | sed 's/^/export /' > /tmp/monit.save.sh

然后,当你开始'在monit配置中,你可以在bash shell中获取该文件,就像你谈到采购/ etc / environment一样。因此,在启动monit程序之前,请获取/tmp/monit.save.sh,然后运行您的程序。这将使monit“start”程序访问传递给docker容器的环境变量。

然而,我可能刚刚描述了你试图避免的包装,对不起,如果是这样的话。