Why
- Docker容器技术极大地简化了软件的交付、部署,更多的优势在此便不再赘述了。
- 利用Docker的volume技术可以部署多套相同配置的James邮件服务,配合(A、MX记录)域名映射即可完成负载功能(邮件相关数据需存于数据库中,配置可参见此博文:James3之——安装与配置)。
- 由于国内服务器大厂大部分禁止25端口对外访问,无奈只能到墙外搭个James邮件发送服务器,然频繁被墙(T﹏T)。使用Docker的Volume技术将配置文件目录从Host挂载到容器中,便可重获新生。
What
- 下面将以自建的一个James3.1.0的镜像作为演示。镜像原理很简单:基于jdk8,将官网James包下载解压并添加Volume指向James配置文件目录,镜像为:james-docker
- James3.1.0的配置文件可以从官网下载,然后取conf目录即可。为了方便,特将其放到Github上便于大家使用:James-Docker
How
- 安装Docker:
下面将和大家一起安装Docker,并启动一个hello-world容器以检验是否安装成功。
如已安装完成了,请跳过此步骤。
注意:CentOS系统建议使用CentOS7,因6对Docker支持存在一定缺陷。当然,6也可以升级到7的,可以在验证环境尝试下,并做好充分的数据备份,参见另一篇文章:CentOS6.x升级到7
整理自Docker官方CentOS安装文档:Get Docker CE for CentOS
- 添加安装脚本:
yum install -y vim && vim docker-install.sh
- 输入以下内容,安装版本号(简)为 18.03.0.ce 的Docker:
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 \
&& sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \
&& sudo yum install docker-ce -y \
&& sudo yum install docker-ce-18.03.0.ce -y \
&& sudo systemctl start docker \
&& sudo docker run hello-world
- 保存退出,并执行:
chmod +x docker-install.sh && sh docker-install.sh && rm -rf docker-install.sh
- 看到下图内容即为安装成功:
- 启动容器
- 现需要启动这样的James邮件服务:
– 可收发邮件,SMTP端口为25、465,POP端口为110
– 配置文件目录为 /opt/james/conf - James的原始配置文件可以从James官网下载整个James服务包然后取其中的conf文件夹,也可以从私人站点获取,后面将会发布到Github上:James3原始配置文件目录压缩包
- 配置文件的修改参见另一篇文章: James3之——安装与配置
- 需要宿主机(即部署Docker的服务器)开放上面的端口
- 此处使用之前做好的一个镜像: stonelu/james-docker:v0.1
- 执行以下脚本:
docker run \
-p 25:25 \
-p 465:465 \
-p 110:110 \
-v /opt/james/conf:/usr/local/james/conf \
--name myjames \
stonelu/james-docker:v0.1
- 第一次启动有点慢,一段时间后,如出现下面内容即为部署成功: