我正在尝试设置一个由docker化的Nagios。为此,我使用的是来自jasonrivers的有效图像:Dockerfile
现在,我需要稍微调整已安装在镜像中的后缀。我需要设置中继主机,以便将从nagios发送的电子邮件转发到我的邮件服务器。这应该和在/etc/postfix/main.cf中设置“relayhost”属性一样简单。
但是,无论我如何在Dockerfile中调整此值(我尝试同时使用sed和COPY进行此操作),在启动容器后检查/etc/postfix/main.cf文件时,都将relayhost值覆盖为空值。
起初,我认为这与Docker本身有关,我认为以某种方式调整文件的Dockerfile步骤最终不会影响最终镜像。但是,当我用乱码覆盖main.cf时(例如将其内容设置为“foo”),然后在运行镜像时,后缀会引发一些错误。
要将这些单词放入代码中,请考虑以下Dockerfile:
FROM jasonrivers/nagios:latest
RUN echo "relayhost = www.abc.com" > /etc/postfix/main.cf
构建它,然后运行生成的图像将导致一个/etc/postfix/main.cf文件,其中包含内容
relayhost =
我曾尝试使用google来了解postfix的工作原理以及为什么这样做,但是我发现的唯一建议是在“master.cf”中配置了某些内容,而事实并非如此(您可以自己下载图像并测试所有这些内容)你自己)。
最佳答案
图像的JasonRivers/Docker-Nagios存储库在后缀启动脚本to modify that setting overlay/etc/sv/postfix/run
中具有一个功能:
sed -i "s/relayhost =.*/relayhost = ${MAIL_RELAY_HOST}/" /etc/postfix/main.cf
将
MAIL_RELAY_HOST
环境变量设置为您的主机。ENV MAIL_RELAY_HOST=www.abc.com
关于docker - Docker-在容器启动时将覆盖对后缀main.cf文件的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192385/