Traefik V2自定义网络下访问容器报网关超时问题求解
问题根因
当前配置中mysql、phpmyadmin服务均加入了自定义的dev网络,但反向代理traefik没有加入该网络,导致traefik无法路由请求到同属dev网络的phpmyadmin容器,因此出现网关超时。
当你移除phpmyadmin的networks: dev配置后,phpmyadmin会自动加入docker-compose默认创建的项目网络,与traefik同网络,因此可以正常访问页面;但此时mysql仍在dev网络,两个服务跨网络无法通信,因此phpmyadmin无法连接数据库。
排查步骤
- 执行
docker network inspect dev,查看返回的Containers字段,确认traefik不在该网络的容器列表中 - 执行
docker inspect traefik,查看Networks字段,确认traefik仅加入了docker-compose默认生成的项目网络
解决方案
最优方案是将traefik也加入dev网络,修改docker-compose.yml中reverse-proxy服务的配置,新增网络配置项:
reverse-proxy: container_name: traefik image: traefik:v2.5 command: --api.insecure=true --providers.docker ports: - "80:80" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" # 新增以下配置 networks: - dev
修改完成后执行docker-compose up -d重启服务即可。
效果验证
- 访问traefik dashboard(默认地址
http://127.0.0.1:8080),在HTTP Routers列表中可找到phpmyadmin对应的路由,状态为正常 - 浏览器访问
http://phpmyadmin.vws.dev可正常打开登录页,使用mysql配置的账号密码可正常登录
内容的提问来源于stack exchange,提问作者tbarbot
相关产品推荐
相关产品推荐

