我正在使用monit启动(并监视)容器内的多个进程。不幸的是,monit在非常精简的环境中运行进程,因此monit启动的进程看不到docker run --env ...
发出的任何内容。在其他环境中,我只需要确保在此过程中获取/etc/environment
或~/.bash_profile
,以便获取环境设置。
但是docker run --env
没有任何等效的AFAIK。除了必须围绕monit进行包装外,还可以创建monit配置文件或创建/etc/environment
,还有没有办法访问这些来自docker的环境变量?
最佳答案
只是在这里大声思考。在运行monit之前,您可以收集它有权访问的环境变量。例如:
env | sed 's/^/export /' > /tmp/monit.save.sh
然后,稍后,当您在monit配置中“启动”时,您可以在bash shell中获取该文件,就像您谈到了采购/ etc / environment一样。因此,在启动monit程序之前,先获取/tmp/monit.save.sh的源代码,然后运行程序。这将使monit“启动”程序可以访问传递给docker容器的环境变量。
但是,我可能刚刚描述了您要避免使用的包装器,如果是这样的话,抱歉。
关于bash - 如何访问由Docker设置的环境变量,该变量是从容器内受monit控制的进程运行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684995/