我有一个在Docker容器内运行的备份脚本,我希望它在磁盘使用率低时向我发送电子邮件.
这是脚本:
#!/bin/bash CURRENT=$(df /data | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 echo "$CURRENT" if [ "$CURRENT" -gt "$THRESHOLD" ] ; then echo "Low disk Space Alert: ${CURRENT}% used" mail -s 'disk Space Alert' olalonde@gmail.com << EOF Backup server remaining free space is critically low. Used: $CURRENT% EOF fi
问题是我无法让邮件在容器内工作.这是我的Docker文件:
FROM ubuntu:latest MAINTAINER olalonde@gmail.com ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y postfix && \ apt-get install -y mailutils && \ apt-get clean ADD rootfs / CMD /disk-alert.sh
我尝试过一些事情,但我能做的最好的事情就是让邮件命令完成而不会出错(尽管我的电子邮件中没有收到任何内容).
是否有一种简单的方法来配置我的容器以便能够发送邮件?只要收到邮件,我就不在乎邮件是垃圾邮件了.
正如Jason已经提到的,我认为将MTA和备份容器分开确实更加清晰.
我前段时间遇到过这个问题(虽然我试图从PHP而不是bash发送邮件),我发现了exim-sender容器,它基本上是一个简单的容器,充当外发SMTP服务器.
为什么不将备份容器链接到这样的SMTP容器?如果您是use ssmtp,则可以通过SMTP容器发送邮件.或者,如果您愿意,也可以使用其他(外部)SMTP服务器.