【问题标题】:How can I access my API using Traefik + Docker + Nodejs without the port number in the URL?如何在 URL 中没有端口号的情况下使用 Traefik + Docker + Nodejs 访问我的 API?
【发布时间】:2020-04-30 16:31:07
【问题描述】:

它可能与 Accessing container on port 3000 thru traefik 重复,但此解决方案适用于 v1 的 traefik。

大家好,目前我正在开发两个东西:

  • 在端口 3001 上响应应用程序
  • 端口 3000 上的节点应用程序

稍后他们将在同一个域上工作,我希望在开发时以这种方式工作。

我决定为这个需要开始自己的 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 文件

提前致谢。

【问题讨论】:

  • 将负载均衡器设置为 80 会导致 IP 冲突吗? #- "traefik.http.services.api-service.loadbalancer.server.port=80"
  • 不,它没有,但是我在哪里可以检查是否存在冲突?好像没有错误

标签: node.js docker port traefik


【解决方案1】:

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

现在一切都在同一个网络上,它可以工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 2021-05-16
    • 2019-02-18
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多