You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik将Mailcatcher的HTTP请求转发至1025端口而非1080问题求助

解决Traefik在Docker Swarm中错误转发Mailcatcher请求到SMTP端口的问题

问题分析

核心问题是Traefik自动检测到Mailcatcher容器暴露的1025(SMTP)端口,优先将HTTP请求转发至该端口,而非你指定的1080(HTTP)端口。日志中的No entryPoint defined for this router警告,说明路由规则未正确绑定到指定的entrypoint,同时Traefik的自动端口发现机制干扰了配置优先级。

解决方案

通过以下步骤修正配置:

  1. 强制路由与服务关联
    添加traefik.http.routers.mailcatcher.service=mailcatcher标签,明确让路由绑定到你定义的服务,避免Traefik自动生成不匹配的默认路由。

  2. 移除冗余的主机端口映射
    Docker Swarm模式下,Traefik通过overlay网络(此处为traefik网络)直接访问容器端口,无需将1080端口映射到主机。移除-p 1080参数,避免干扰Traefik的端口检测逻辑。

  3. 确保端口标签精准匹配
    确认traefik.http.services.mailcatcher.loadbalancer.server.port=1080标签中的服务名称与创建的服务名(mailcatcher)完全一致,确保Traefik正确识别目标端口。

修正后的完整命令

docker service create --name mailcatcher --network traefik \
  --label "traefik.enable=true" \
  --label "traefik.http.routers.mailcatcher.rule=Host('mailcatcher.local')" \
  --label "traefik.http.routers.mailcatcher.entrypoints=http" \
  --label "traefik.http.routers.mailcatcher.service=mailcatcher" \
  --label "traefik.http.services.mailcatcher.loadbalancer.server.port=1080" \
  --label "traefik.docker.network=traefik" \
  dockage/mailcatcher:0.9.0

额外验证

  • 确认Traefik的Docker Provider配置已启用Swarm模式:providers.docker.swarmMode=true(若此前能正常路由其他Swarm服务,此项应已配置)。
  • 重新部署后,查看Traefik日志,确认出现Creating server 0 http://<容器IP>:1080的日志,验证端口转发逻辑已修复。

内容的提问来源于stack exchange,提问作者jkappers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:32:52