【发布时间】:2020-09-01 20:15:59
【问题描述】:
我正在关注一些关于 traefik 2.0 和 docker 的教程 link_to_tutorial,并且我有 docker-compose 文件,它启动了两个容器:traefik 和 my-app。问题是当容器启动并运行时,我无法浏览到 localhost:8082,按照配置的建议,我总是在浏览器中得到“无法连接”。
docker-compose.yml:
version: "3.3"
services:
traefik:
image: "traefik:v2.0.1"
command:
- --entrypoints.web.address=:80
- --providers.docker
- --api.insecure
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
my-app:
image: containous/whoami:v1.3.0
command:
# It tells whoami to start listening on 8082 instead of 80
- --port=8082
labels:
- "traefik.http.routers.my-app.rule=Host(`whoami.docker.localhost`)"
- "traefik.http.services.my-app.loadbalancer.server.port=8082"
但是我能够获得 localhost:8080 并且 traefik UI 运行良好。据我了解,对“traefik”容器的所有请求通常都应重定向到“my-app”:8082 容器,但它以某种方式失败。请注意。谢谢。
【问题讨论】:
-
您是如何提出请求的?您有一个基于主机名的规则,这意味着您必须要么访问 URL
http://whoami.docker.localhost上的服务,要么您需要显式设置Host:标头。 -
我正在制作 localhost:80' 并给出“找不到页面”,但是当我制作 whoami.docker.localhost 时,正如你所说,它可以工作。所以我对在这种情况下将 Host: header 放在哪里有点困惑?谢谢。
-
非常感谢,一切正常!