如何在 URL 中没有端口号的情况下使用 Traefik + Docker + Nodejs 访问我的 API?

How can I access my API using Traefik + Docker + Nodejs without the port number in the URL?

它可能与 : 重复,但此解决方案适用于 traefik 的 v1。

大家好,目前我正在开发两件事:

以后他们会在同一个领域工作,我想在开发的时候也这样工作。

出于这种需要,我决定开始使用 traefik ..

version: '3.7'

services:
  traefik:
    image: traefik:v2.2
    command: 
      - --api.insecure=true 
      # Docker
      - --providers.docker 
      - --providers.docker.exposedByDefault=false 
      - --providers.docker.network=internal
      - --entrypoints.web.address=:80v02.api.letsencrypt.org/directory
      # Config
      - --accesslog=true
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  whoami:
    image: emilevauge/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost.test`)"
      - "traefik.enable=true"
  api:
    container_name: api
    build:
      context: .
      target: development
    labels:
      #- "traefik.http.services.api-service.loadbalancer.server.port=3000"
      - "traefik.http.routers.api-router.rule=Host(`api.brainstoo.localhost.test`)"
      - "traefik.enable=true"

现在我可以使用 url 访问我的 api : api.brainstoo.localhost.test:3000 但我想直接使用 api.brainstoo.localhost.test 访问它而不需要端口。 无论我评论还是取消注释行 ** #- "traefik.http.services.apiservice.loadbalancer.server.port=3000"** 都没有改变。

我不知道我做错了什么。可能我不太理解traefik会不会解决这类问题

注意:我已经配置了我的 /etc/hosts 文件

提前致谢。

我的应用程序 docker 配置太长了,但是。我应该把它全部发布,因为这是一个网络问题!

现在一切都在同一个网络上了!