Caddy HTTP 服务部署
约 312 字大约 1 分钟
DockerDocker ComposeCaddy反向代理
2026-03-20
1. 准备持久化目录
mkdir data
mkdir config
touch ./config/Caddyfile2. 准备独立网络
docker network create caddy3. compose 示例
services:
caddy:
image: caddy:2.10.0
container_name: caddy
restart: always
networks:
- caddy
stdin_open: true
tty: true
volumes:
- ./data:/data
- ./config:/config
- ./config/Caddyfile:/etc/caddy/Caddyfile:ro
- /etc/localtime:/etc/localtime:ro
ports:
- 80:80
- 443:443
networks:
caddy:
external: true4. 启动容器
docker compose up -d5. 转发其他容器
官方文档: 欢迎 — Caddy v2中文文档
如果要让 Caddy 反向代理其他容器,目标容器也需要加入 caddy 网络:
docker network connect caddy container_name或者直接在对方的 compose 文件中声明同一个外部网络:
services:
name:
networks:
caddy:
networks:
caddy:
external: true6. Caddyfile 示例
https://domain {
encode gzip
reverse_proxy http://container_name:port {
header_up Host {host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
}
}7. 使用建议
- 目标容器和 Caddy 必须在同一个 Docker 网络里,相关说明见 3.容器网络与端口映射。
- 如果挂载目录涉及写入证书和缓存文件,启动失败时先检查目录权限,相关说明见 10.持久化文件权限问题。