我有一个在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' [email protected] << EOF Backup server remaining free space is critically low. Used: $CURRENT% EOF fi
问题是,我无法设法让邮件在容器内工作。 这是我的Docker文件:
FROM ubuntu:latest MAINTAINER [email protected] 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
我已经尝试了一些东西,但我能做的最好的事情是让邮件命令完成而不会出错(尽pipe我没有收到任何邮件)。
有没有简单的方法来configuration我的容器能够发送邮件? 只要收到邮件,我就不在乎邮件是垃圾邮件。
正如Jason已经提到的,我认为把MTA和备份容器分开确实是一个更清洁的方法。
前段时间我遇到了这个问题(尽pipe我试图从PHP而不是bash发送邮件),并且发现了exim-sender容器,它基本上是一个简单的容器,充当外发的SMTP服务器。
为什么不把你的备份容器连接到这样一个SMTP容器? 如果您使用ssmtp ,则可以通过SMTP容器发送邮件。 或者,如果您愿意,也可以使用其他(外部)SMTP服务器。
考虑从Amazon SES或MailGun或任何其他基于HTTP的邮件API发送电子邮件,而不是将整个MTA添加到您的容器。
或者对警报系统(如OpsGenie或PagerDuty)进行API调用。