Docker compose Traefik 2网关超时
所以我有下面的docker-compose.ymlDocker compose Traefik 2网关超时,docker-compose,traefik,Docker Compose,Traefik,所以我有下面的docker-compose.yml version: "3.7" services: roundclinic-mysql: image: mysql:5.7 networks: - spring-boot-mysql-network environment: - MYSQL_DATABASE= - MYSQL_USER=
version: "3.7"
services:
roundclinic-mysql:
image: mysql:5.7
networks:
- spring-boot-mysql-network
environment:
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
- MYSQL_ROOT_PASSWORD=
volumes:
- ./mysqldata:/var/lib/mysql:rw,delegated
ports:
- "3306:3306"
web-service:
image: roundclinic/roundclinic:latest
networks:
- spring-boot-mysql-network
- traefik-network
depends_on:
- roundclinic-mysql
ports:
- 8080:8080
environment:
- "SPRING_PROFILES_ACTIVE=dev"
links:
- roundclinic-mysql
labels:
- "--providers.docker.network=traefik_default"
- "traefik.enable=true"
- "traefik.http.routers.roundclinic.rule=Host(`api-dev.roundclinic.app`)"
- "traefik.http.routers.roundclinic.entrypoints=web"
- "traefik.http.services.cal.loadbalancer.server.port=8080"
traefik:
image: "traefik:v2.2"
container_name: "traefik"
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "traefik.docker.network=traefik-network"
ports:
- "80:80"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
traefik-network:
driver: bridge
external: true
spring-boot-mysql-network:
driver: bridge
volumes:
my-db:
SpringBoot启动良好,可以连接到mysql
当我连接到我可以点击我的应用程序刚刚好
当我连接到时,网关超时。我可以在traefik日志中看到,它正在将请求转发到似乎正确的IP和端口,但没有任何内容会影响实际的应用程序。我不知道这里发生了什么。有什么帮助吗?当访问端口8080时,您正在绕过Traefik直接访问您的应用程序,对吗 一般来说,Traefik标签看起来不错。定义入口点、端口和主机,并提供路由器和服务端口。这些通常是基于Docker的设置的所有要求 我注意到的一件事是
traefik
容器使用“traefik.docker.network=traefik network”
,但您的web应用程序使用:
“--providers.docker.network=traefik\u default”
我不确定traefik是否提供了traefik\u default
,但网络名称不匹配可能是问题所在
我无法测试这是否是问题,但这将是第一件要检查的事情。
一种方法是简化配置,但始终使用docker compose的
networks
键,而不是将其与标签和参数混合使用。我无法重现此compose文件的问题。你能不能给我提供一些更多的数据,比如使用这个的db凭据是什么?但是,我假设问题出在端口80
,因为这是一个保留的端口号,默认情况下不需要特权就可以轻松使用它