【问题标题】:Traefik still needs port specificationTraefik 仍然需要端口规范
【发布时间】:2021-05-14 03:35:07
【问题描述】:

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

当我点击 http://api-landingpage.cayama.com.br/ 时,它给了我一个 404 页面错误,但是当我尝试 http://api-landingpage.cayama.com.br:8001/ 时,它正确地转到了我的 api。

我在 AWS Route53 中托管了我的域,并且我使用 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 上指定我的应用程序正在运行的端口。

谢谢大家!

【问题讨论】:

    标签: node.js amazon-web-services docker amazon-ec2 traefik


    【解决方案1】:

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

    我不完全确定这是原因,但您使用的是完整 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"
    

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

    - --log.level=DEBUG
    

    【讨论】:

      【解决方案2】:

      你试过了吗:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 2021-07-28
        • 2021-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多