如何部署 traefik 并集成 Let's Encrypt
1. 部署 traefik 容器
docker run -d \
-p 80:80 \
-p 443:443 \
--name traefik \
-v $PWD/traefik/:/etc/traefik/ \
traefik:v2.6
由于这里把 traefik 当做最外层的网关服务,故把 80、443 端口映射到容器内的 80 和 443 端口。所以必须使用 root 权限创建勇气。
在安全要求更加严格的环境中,无论是宿主机还是容器内部,你都无法使用 root 用户执行命令。
你需要修改成非root端口,并配置更上层的网关服务,路由流量到 traefik
如果你无法直接连接 Docker Hub,尝试使用163镜像 hub-mirror.c.163.com/library/traefik:v2.6
2. 配置 HTTP 服务端口
在 $PWD/traefik
创建文件 conf/conf.yaml
providers:
file:
directory: /etc/traefik/conf
entryPoints:
web:
address: ":80"
3. 配置路由
在 $PWD/traefik
创建文件 traefik.yaml
http:
services:
service1:
loadBalancer:
servers:
- url: "http://172.17.0.6"
service2:
loadBalancer:
servers:
- url: "http://172.17.0.7"
routers:
service1:
rule: "Host(`service1.example.com`)"
service: "service1"
service2:
rule: "Host(`service2.example.com`)"
service: "service2"
4. 完成部署
traefik 会监控配置文件的变化,并动态更新配置。 创建上述2、3中的配置后,你应该就可以通过80端口访问你的服务。