traefik自定义服务创建



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

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

除了不退出之外,图像还需要满足什么特性,才能被traefik识别吗?当我直接在docker-compose.yml中发布端口时,我可以毫无问题地访问http服务器。

我认为您缺少标签。

当我的一个容器需要暴露时,我会在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应该能够自己发现。

考虑阅读您试图配置的代理的文档,它已经全部解释过了,阅读时间不长,绝对值得。

最新更新