使用Docker容器部署Traefik是最轻量且贴近生产的方式,依赖Docker 20.10+、Docker Compose v2.20+,需开放80/443端口、挂载docker.sock、配置traefik.yml与acme.json,并通过标签自动发现后端服务。
直接用 Docker 容器部署 Traefik 是最轻量、最贴近生产的方式。它不依赖系统级安装,配置集中,启动快,天然适配容器编排环境。
准备基础运行环境
确保宿主机已安装:
Docker 20.10 或更高版本(推荐 24.x)
Docker Compose v2.20+(建议使用
命令而非旧版
)
开放 TCP 端口 80 和 443(HTTPS 必需),如为云服务器需同步配置安全组
可被容器读取(Traefik 需监听 Docker 事件实现自动发现)
创建最小可行配置
新建目录(如
),放入以下两个核心文件:
traefik.yml(静态配置)
acme.json(证书存储)
:空 JSON 文件,执行
设置权限
编写
docker
-compose.yml 启动服务
该配置启用 Dashboard(仅限内网访问)、自动 HTTPS、Docker 服务发现:
Trae
字节跳动推出的AI编程IDE工具
下载
运行
即可启动。Dashboard 默认可通过
访问(首次需配置 hosts 或本地 DNS 指向)。
让后端服务自动接入
无需改 Traefik 配置——只需在其他服务的
中添加标签:
Traefik 会实时监听容器启停,自动注册路由、申请并续期证书。只要 DNS A 记录指向宿主机 IP,
就能直接 HTTPS 访问。
不复杂但容易忽略:Dashboard 端口暴露在公网有风险,上线前务必加 Basic Auth 或限制 IP;acme.json 权限必须是 600;Docker socket 挂载是自动发现的前提,不可省略。
docker composedocker-compose/var/run/docker.socktraefik-prodentryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # 关键:避免意外暴露所有容器
file:
filename: /dynamic.yml
api:
dashboard: true
insecure: false # 生产中禁用非加密 API 访问
certificatesResolvers:
letsencrypt:
acme:
email: admin@example.com
storage: /acme.json
httpChallenge:
entryPoint: web
touch acme.json && chmod 600 acme.jsonversion: "3.8"
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8080:8080" # Dashboard,建议后续通过域名+Basic Auth 保护
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/etc/traefik/traefik.yml:ro
- ./acme.json:/acme.json
- ./dynamic.yml:/dynamic.yml:ro
command:
- "--log.level=INFO"
- "--accesslog=true"
docker compose up -dhttp://localhost:8080/dashboard/docker-compose.ymlservices:
myapp:
image: nginx:alpine
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`app.example.com`)"
- "traefik.http.routers.myapp.tls.certresolver=letsencrypt"
- "traefik.http.routers.myapp.entrypoints=websecure"
app.example.com