我在应用程序docker-compose文件中使用Traefik 2.0作为反向代理。 我正在使用的docker-compose文件是:
version: '3.2'
services:
myapp.com:
image: myappservice:master
restart: always
labels:
- traefik.enable=true
- traefik.http.routers.myapp.rule=PathPrefix(`/api/`)
myui:
image: myui:latest
restart: always
ports:
- 90:80
labels:
- traefik.enable=true
- traefik.http.routers.myui.rule=Path(`/`)
proxy:
image: traefik:v2.0 # The official v2.0 Traefik docker image
command:
- --api.insecure=true # Enable the web UI
- --log.level=DEBUG
- --entrypoints.insecure.address=:80
- --entrypoints.secure.address=:443
- --providers.docker=true
- --providers.docker.network=traefik-network
- --providers.docker.exposedByDefault=false
- --providers.file.directory=/etc/traefik/configuration/
- --providers.file.watch=true
ports:
- 80:80 # The HTTP port
- 443:443 # The HTTPS port
- 8080:8080 # The traefik Web UI
volumes:
- '/var/run/docker.sock:/var/run/docker.sock' # So that Traefik can listen to the Docker events
- './traefik:/etc/traefik/configuration'
networks:
default:
external:
name: "traefik-network" #The same network defined in Docker provider config
使用docker-compose up命令部署此文件后,访问URL http://localhost:80/
时,UI(由myui容器提供)应该在浏览器中可用案例1: 按照通过标签进行的traefik配置,此URL http://localhost:80/应将请求转发到myui容器的端口80,并应显示UI。但这是不正确的。正确的标题/名称在浏览器选项卡的标题栏中显示为“ MyUi”。但是内容不显示。
情况2: myui容器没有问题,因为URL http://localhost:90/(可通过映射的主机端口直接访问myui容器)正确显示了UI。
当我在Google chrome浏览器的结果页面上使用“查看页面源代码”时,在两种情况下,源代码似乎都是相同的。
每次结果相同时,我都会使用不同的浏览器进行检查。
我使用诸如Insomnia之类的API客户端来检查GET请求http://localhost:80/和http://localhost:90/的结果,它们均返回200 OK响应。
这是Traefik的问题吗?或者是别的什么? 有人可以帮我解决这个问题吗?