好的,所以我有一个node-js app我想通过traefik访问。
node-js app在端口3000
在按照入门页面中的test-it
说明操作后,我已经运行了traefik。
搬运工-compose.yml
version: '2'
services:
app:
build:
context: .
dockerfile: docker/app/Dockerfile
environment:
- NODE_ENV=development
- NODE_PORT=3000
volumes:
- ./app:/app
expose:
- "3000"
networks:
- web
labels:
- "traefik.backend=microservice"
- "traefik.backend.port=3000"
- "traefik.port=3000"
- "traefik.frontend.rule=Host:microservice.docker.localhost"
networks:
web:
external:
name: traefik_webgateway
curl -H Host:microservice.docker.localhost http://localhost/
Bad Gateway
curl -H Host:microservice.docker.localhost http://localhost:3000/
curl:(52)来自服务器的空回复
但curl -H Host:whoami.docker.localhost http://localhost/
的工作方式与预期一致。
答案 0 :(得分:0)
问题在于,我的微服务必然会听localhost:3000
,而是将其更改为0.0.0.0:3000
,它就像魅力一样。
从- "traefik.backend.port=3000"
docker-compose.yml
将127.0.0.1 microservice.docker.localhost
添加到/etc/hosts
让我能够:
curl http://microservice.docker.localhost/
并获得我期待的回复
我是微服务器!