就我而言,我在基于Unix的主机上安装了 ssmtp 包。 由于某种原因,在我的情况下最好的方法是在我的主机上使用ssmtp二进制文件(在/ usr / sbin下)在我的APP容器中发送邮件(html文件)。
我尝试将主机目录/ usr / bin挂载到容器中:
docker run -v /usr/sbin:/host_sbin --name=myapp -ti -p 889:80 -p 890:5432 myimage
并尝试执行ssmtp,这里有一些尴尬的尝试及其结果:
在我的APP容器中 / host_sbin
下 ssmtp ---> bash: ssmtp: command not found
./ssmtp ---> bash: ./ssmtp: No such file or directory
所以看来事情并不像我想的那么简单。 任何人都可以做这样的事情与我分享解决方案吗? 如果有人能解释我为什么不起作用,我会很感激。
答案 0 :(得分:7)
只是将二进制文件安装到容器中不起作用,因为ssmtp
二进制文件可能不是静态链接的。相反,它会动态链接到主机系统中存在但不在容器中的一组共享库。您可以使用ldd
命令对此进行验证,whilch将打印ssmtp
二进制文件链接的所有库:
> ldd /usr/sbin/ssmtp
如果您想使用主机ssmtp
二进制文件,则还必须将所有必需的共享库安装到容器中(并调整库路径等等;我建议不要这样做)。
以下是我的建议:重要的一点可能不是ssmtp
二进制,而是SSMTP的配置文件(取决于您的发布,但通常在/etc/ssmtp
)。我建议......
ssmtp
。不要将二进制文件从主机安装到容器中。-v /etc/ssmtp:/etc/ssmtp
标志)