IMLC.ME

如何部署 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端口访问你的服务。