如何在 URL 中没有端口号的情况下使用 Traefik + Docker + Nodejs 访问我的 API?
How can I access my API using Traefik + Docker + Nodejs without the port number in the URL?
它可能与 : 重复,但此解决方案适用于 traefik 的 v1。
大家好,目前我正在开发两件事:
- 3001 端口上的 React 应用程序
- 端口 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 文件
提前致谢。
我的应用程序 docker 配置太长了,但是。我应该把它全部发布,因为这是一个网络问题!
现在一切都在同一个网络上了!
它可能与 :
大家好,目前我正在开发两件事:
- 3001 端口上的 React 应用程序
- 端口 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 文件
提前致谢。
我的应用程序 docker 配置太长了,但是。我应该把它全部发布,因为这是一个网络问题!
现在一切都在同一个网络上了!