【问题标题】:Accessing container on port 3000 thru traefik通过 traefik 访问 3000 端口上的容器
【发布时间】:2017-08-28 13:56:29
【问题描述】:

好的,所以我有一个我想通过 traefik 访问的 node-js 应用程序。

node-js 应用运行在端口3000

按照入门页面中的test-it 说明,我已经运行了 traefik。

docker-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/

错误的网关

curl -H Host:microservice.docker.localhost http://localhost:3000/

curl: (52) 来自服务器的空回复

curl -H Host:whoami.docker.localhost http://localhost/ 的工作方式与预期相同。

【问题讨论】:

  • traefik.backend.port 选项看起来不正确,但您应该只设置 traefik.port 就可以了。我们可以看到 traefik config.toml 和/或命令行标志吗?另外,我知道它应该是一样的,你可以尝试在你的主机文件中映射 micro service.docker.localhost 并直接卷曲正确的名称吗? whoami.docker.localhost 声明在哪里?
  • @whites11 whoami.docker.localhost 在入门中声明docs.traefik.io

标签: traefik


【解决方案1】:

问题是我的微服务必须监听localhost:3000,而我将其更改为0.0.0.0:3000,它就像一个魅力。

docker-compose.yml 中删除了- "traefik.backend.port=3000"

127.0.0.1 microservice.docker.localhost 添加到/etc/hosts

这让我能够:

curl http://microservice.docker.localhost/ 并得到我期待的回复

我是一个微服务!

【讨论】:

  • 有人可以用 v2 发布答案吗? :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多