【问题标题】:How to access environment variables set by docker run from monit controlled processes inside the container如何从容器内的监控进程访问由 docker run 设置的环境变量
【发布时间】:2015-04-16 20:08:29
【问题描述】:

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

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

【问题讨论】:

  • docker run 的另一个选项是--env-file=[] Read in a file of environment variables,有帮助吗?
  • 不,这只是同时设置多个环境变量的便捷方式。如果它们被父进程取消设置,它不提供重新访问容器内的这些变量,就像 monit 一样。

标签: bash docker monit


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多