bash - 如何访问由Docker设置的环境变量,该变量是从容器内受monit控制的进程运行的

标签 bash docker monit

我正在使用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/

相关文章:

bash - 如何获取 Bash 命令历史统计信息,例如最近 6 个月中最常用的命令?

python - 查看日志文件的脚本

java - 如何在Docker容器中部署Spring应用程序?

c# - 如何使用Dockerfile覆盖ASP.NET Core连接字符串

docker - 在 Debian Jessie 中安装 Openjdk-8 的问题

influxdb - 如何在 Grafana 表(或 singlestat)中显示 InfluxDB 测量的最新时间戳?

node.js - 如何通过 upstart 和 monit 支持多个 nodejs 服务?

java - 执行 bash 脚本并从 java 传递带空格的参数

bash - 删除列的一部分,如果它在特定的列号中。 (该列有一个变量)

python - 使用 monit 运行和停止 Gunicorn 服务器