Docker compose Traefik 2网关超时

Docker 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=

所以我有下面的docker-compose.yml

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
,因为这是一个保留的端口号,默认情况下不需要特权就可以轻松使用它