我已经设法将 Traefik 设置为与我的 docker swarm 一起工作,并且对于 HTTP 请求它工作得很好。但是,我不知道如何为我的一些容器设置 SSL。我将使用letsencrypt 生成证书。
traefik.toml(部分)
defaultEntryPoints = ["https","http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
email = "acme@example.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
caServer = "https://acme-staging.api.letsencrypt.org/directory"
码头工人-compose.yml
version: '3'
services:
web:
...
deploy:
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:example.com,www.example.com"
- "traefik.docker.network=public"
- "traefik.frontend.entryPoints=http"
- "traefik.backend=service_web"
在此配置中,我的应用程序永远不会到达 SSL,因为我的容器没有设置 SSL entryPoint。如果我将“traefik.frontend.entryPoints”更改为“https”,则会调用 Letsencrypt(LE 由于暂存而出错,但此时这对我来说并不重要)。
我最大的问题是,我仍然不知道如何将 traefik TOML 配置转换为 docker-compose 标签。例如,Traefik 文档解释了入口点,但我有一堆服务在不同的域下。有些有 SSL,有些没有 SSL;因此,我希望能够仅使用 docker-compose 设置 http 和 https 入口点、http 到 https 重定向等。
另外,一旦我能够在 docker-compose 中设置入口点,我是否需要将[entryPoints]
块保留在 traefik.toml 中?