traefik 自定义服务创建

时间:2021-07-12 12:27:29

标签: docker docker-compose traefik

我正在尝试通过 docker-compose 使用 traefik 部署我自己的 docker 容器,里面有一个 http-server。 示例 whoami 容器是通过动态配置识别的(因此动态配置原则上有效)。 当我尝试在 docker-compose.yml 文件中配置它时,无法识别我自己的容器。我只是更改配置中的图像,没有其他任何事情,它不起作用。以下只是为了说明我强制使用端口,所以没有在图像本身中暴露端口不是问题。

my-service:
 image: my-image
 labels:
  - "traefik.http.services.my-service.loadbalancer.server.port=8002"

除了不能退出之外,图像是否还需要满足任何属性才能使其能够被 traefik 识别? 当我直接在 docker-compose.yml 中发布端口时,我可以毫无问题地访问 http-server。

1 个答案:

答案 0 :(得分:0)

我认为您缺少标签。

当我的一个容器需要公开时,这是我将添加到 docker-compose 中的内容:

labels:
- traefik.enable=true
- traefik.http.routers.myappname.entrypoints=tls
- traefik.http.routers.myappname.rule=HostRegexp(`{subdomain:[a-z]+}.subdomain.example.com`)

确定应用程序 FQDN 是您肯定缺少的关键部分 - 其他两个将取决于您如何配置 Traefik。

仅供参考,相应的 Traefik 容器如下所示:

traefik:
  command:
[...]
  - --entrypoints.web.address=:80
  - --entrypoints.web.http.redirections.entryPoint.to=tls
  - --entrypoints.web.http.redirections.entryPoint.scheme=https
  - --entrypoints.tls.address=:443
  - --entrypoints.tls.http.tls=true
  - --providers.docker=true
  - --providers.docker.exposedbydefault=false
  ports:
  - 80:80
  - 443:443
  volumes:
  - /var/run/docker.sock:/var/run/docker.sock:ro

Traefik 文档做得非常好,并且会给你一个类似的示例 https://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/#details

作为旁注,不太了解部署 Traefik 的用途,请确保正确配置 Docker 提供程序:https://doc.traefik.io/traefik/providers/docker/

仅供参考,traefik.http.services.my-service.loadbalancer.server.port 标签将用于帮助 Traefik 确定它应该使用哪个端口,连接到后端容器。

如果该容器没有暴露某些端口,或者暴露了多个端口——否则,Traefik 应该能够自己找出来。

考虑阅读您尝试配置的代理的文档,所有内容都有解释,阅读时间不长,绝对值得您花时间。

相关问题