
cenk1cenk2/caddyCaddy Docker镜像是将Caddy Web服务器容器化的部署方案。Caddy是一款现代化的开源Web服务器,以自动HTTPS配置、简洁的配置语法和强大的扩展性著称。该镜像旨在提供开箱即用的Web服务能力,帮助用户快速部署安全、高效的Web服务。
将本地静态文件目录挂载到容器中,启动Caddy提供静态文件服务:
bashdocker run -d \ --name caddy \ -p 80:80 \ -p 443:443 \ -v ./Caddyfile:/etc/caddy/Caddyfile \ -v ./static-files:/srv \ -v caddy_data:/data \ caddy:latest
通过Caddyfile配置反向代理,将请求转发至后端服务(如运行在localhost:3000的Node.js应用):
Caddyfile内容:
example.com { reverse_proxy localhost:3000 }
启动容器(需确保后端服务与Caddy容器网络互通,可使用--network参数指定共享网络):
bashdocker run -d \ --name caddy \ --network my-network \ -p 80:80 \ -p 443:443 \ -v ./Caddyfile:/etc/caddy/Caddyfile \ -v caddy_data:/data \ caddy:latest
创建docker-compose.yml文件,定义Caddy服务及相关配置:
yamlversion: '3.8' services: caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./static-files:/srv # 静态文件目录(按需挂载) - caddy_data:/data # 存储SSL证书等持久化数据 - caddy_config:/config # 配置持久化目录 environment: - TZ=Asia/Shanghai # 设置时区 networks: - caddy-network volumes: caddy_data: caddy_config: networks: caddy-network:
启动服务:
bashdocker-compose up -d
Caddy的核心配置通过Caddyfile实现,以下是常见配置示例:
example.com { root * /srv file_server }
api.example.com { reverse_proxy backend:8080 # backend为docker-compose中后端服务名称 }
example.com { root * /srv encode gzip zstd # 启用Gzip和Zstd压缩 header Cache-Control "public, max-age=3600" # 设置缓存策略 file_server }
| 环境变量 | 说明 | 默认值 |
|---|---|---|
CADDY_HTTP_PORT | HTTP服务端口 | 80 |
CADDY_HTTPS_PORT | HTTPS服务端口 | 443 |
TZ | 容器时区 | UTC |
CADDY_CONFIG | 配置内容(替代Caddyfile) | 无 |
| 挂载路径 | 说明 |
|---|---|
/etc/caddy/Caddyfile | Caddy配置文件 |
/data | 存储SSL证书、密钥等持久化数据 |
/srv | 静态文件根目录(按需挂载) |
/config | 配置持久化目录 |
bashdocker logs -f caddy
修改Caddyfile后,无需重启容器,执行以下命令重载配置:
bashdocker exec caddy caddy reload
bashdocker pull caddy:latest docker-compose down docker-compose up -d
/data目录,避免证书丢失

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务