Docker容器中Jenkins连接本地MailHog邮件服务失败求助
解决方案
方案1:合并两个服务到同一个Docker Compose配置
将Jenkins和MailHog放在同一个Compose文件中,两个容器会自动加入默认自定义网络,可直接通过服务名互相访问。
修改后的完整Docker Compose配置:
services: jenkins: image: jenkins/jenkins ports: - "127.0.0.1:8080:8080" volumes: - jenkins_home:/var/jenkins_home restart: unless-stopped networks: - jenkins-email-net email: image: mailhog/mailhog platform: linux/amd64 ports: - "127.0.0.1:1025:1025" # SMTP - "127.0.0.1:8025:8025" # web UI restart: unless-stopped networks: - jenkins-email-net volumes: jenkins_home: networks: jenkins-email-net: driver: bridge
之后在Jenkins的SMTP配置中,将SMTP服务器地址设为email,端口保持1025即可。
方案2:将两个容器加入同一自定义Docker网络
如果不想合并Compose文件,可手动创建共享网络,让两个容器加入其中:
- 创建自定义Docker网络:
docker network create jenkins-email-net
- 修改Jenkins的Docker Compose配置,加入网络声明:
services: jenkins: image: jenkins/jenkins ports: - "127.0.0.1:8080:8080" volumes: - jenkins_home:/var/jenkins_home restart: unless-stopped networks: - jenkins-email-net volumes: jenkins_home: networks: jenkins-email-net: external: true
- 修改MailHog的Docker Compose配置,加入网络声明:
services: email: image: mailhog/mailhog platform: linux/amd64 ports: - "127.0.0.1:1025:1025" # SMTP - "127.0.0.1:8025:8025" # web UI restart: unless-stopped networks: - jenkins-email-net networks: jenkins-email-net: external: true
- 重启两个容器后,在Jenkins的SMTP配置中,将服务器地址设为
email,端口1025。
方案3:调整MailHog端口绑定并使用主机IP访问
如果坚持使用主机IP访问,需修改MailHog的端口绑定,让其监听所有网卡而非仅本地回环:
- 修改MailHog的Docker Compose端口配置:
ports: - "0.0.0.0:1025:1025" # SMTP - "127.0.0.1:8025:8025" # web UI
- 找到主机的局域网IP(可通过
ifconfig或ip addr命令查看,比如192.168.1.100),在Jenkins的SMTP配置中,将服务器地址设为该IP,端口保持1025。
注意:此方案需确保主机防火墙未阻止容器访问1025端口。
内容的提问来源于stack exchange,提问作者maybefreedom
相关产品推荐
相关产品推荐

