Traefik 仍然需要端口规范

Traefik still needs port specification

我是 AWS 的新手,也是 Traefik 的新手。我在尝试消除我正在开发的应用程序中对端口指定的需要时遇到了很多麻烦。

当我点击 http://api-landingpage.cayama.com.br/ it give`s me an 404 page error, but when I try http://api-landingpage.cayama.com.br:8001/ 时,它会正确转到我的 api。

我在 AWS Route53 中托管了我的域,并且我使用 docker 作为提供商。

这里是我的配置:

docker-compose.yml: 版本:“3”

services:
  app:
    build: .
    ports:
      - "8001:8001"
    
    command: "npm start"

docker-production.yml:

version: "3"

services:
  traefik:
    image: traefik
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  app:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.app.rule=Host(`http://api-landingpage.cayama.com.br/`)"
      - "traefik.http.routers.app.entrypoints=web"

我确定这里缺少基本的东西,有人可以帮我吗?

我只是不想在 URL 上指定我的应用程序所在的端口 运行。

谢谢大家!

你试过了吗:

- "traefik.http.services.app.loadbalancer.server.port=8001"

理论上,如您所说,您不必手动指定端口。

我不完全确定是这个原因,但您使用的是完整 URL 而不是主机。 基本上你应该替换这个:

- "traefik.http.routers.app.rule=Host(`http://api-landingpage.cayama.com.br/`)"

有了这个:

- "traefik.http.routers.app.rule=Host(`api-landingpage.cayama.com.br`)"

如果它不能解决您的问题,您可以尝试使用 loadbalancer 指令,即使它在理论上对 Docker Swarm 有用,但对 Docker 没有用(把它放在你的app 服务):

- "traefik.http.services.app.loadbalancer.server.port=8001"

然后,如果仍然无法正常工作,请启用调试并在日志中查找错误。 为了启用调试,将其添加到 command 部分的 Traefik 服务中:

- --log.level=DEBUG