Caddy Docker版本安装部署

Caddy 是一款强大的 Web 服务器,具有自动 HTTPS 配置、简易的配置文件和多功能反向代理等功能。本文将通过 Docker 容器的方式部署 Caddy,并介绍如何配置 HTTPS、Web 服务、反向代理和负载均衡。

官方网站:https://caddyserver.com/

官方文档:https://caddyserver.com/docs/

1. 安装和部署 Caddy Docker 容器

1.1 安装 Docker

如果你还没有安装 Docker,可以通过以下命令安装 Docker:

https://getdocker.quickso.cn/

1
curl -fsSL https://cdn.jsdelivr.net/gh/muzihuaner/docker-install@master/install.sh -o install-docker.sh

1.2 拉取 Caddy Docker 镜像

通过 Docker Hub 拉取 Caddy 镜像:

1
docker pull caddy:latest

1.3 运行 Caddy 容器

创建一个名为 caddy 的 Docker 容器并启动:

1
docker run -d --name caddy -p 80:80 -p 443:443 caddy

这将启动一个 Caddy 容器,并映射主机的 80 和 443 端口到容器内的对应端口。

2. 配置 HTTPS

Caddy 会自动为你配置 HTTPS,前提是你已正确配置了 DNS 和域名。通过 Caddyfile 配置文件,你可以指定 HTTPS 的配置。

2.1 创建 Caddyfile 配置文件

创建一个 Caddyfile 文件(例如,Caddyfile):

1
touch Caddyfile

在该文件中配置域名和 HTTPS 设置:

1
2
3
4
5
your-domain.com {
# 自动启用 HTTPS
root * /usr/share/caddy
file_server
}

Caddy 会自动为 your-domain.com 配置 HTTPS,并且通过 Let’s Encrypt 获取 SSL 证书。

2.2 挂载 Caddyfile 到 Docker 容器

修改 Docker 启动命令,挂载 Caddyfile 配置文件:

1
2
3
docker run -d --name caddy -p 80:80 -p 443:443 \
-v /path/to/Caddyfile:/etc/caddy/Caddyfile \
caddy

请将 /path/to/Caddyfile 替换为你的 Caddyfile 文件的路径。

3. 配置 Web 服务

Caddy 支持静态文件服务和其他 Web 应用的反向代理。这里我们以静态网站为例,配置 Caddy 来提供 Web 服务。

3.1 配置静态网站

修改 Caddyfile 以指向你的网站目录:

1
2
3
4
your-domain.com {
root * /path/to/your/site
file_server
}

其中,/path/to/your/site 是你的静态网站所在的目录。

3.2 挂载网站目录到 Docker 容器

1
2
3
4
docker run -d --name caddy -p 80:80 -p 443:443 \
-v /path/to/Caddyfile:/etc/caddy/Caddyfile \
-v /path/to/your/site:/usr/share/caddy \
caddy

这样,Caddy 将提供你的静态网站,并自动为其启用 HTTPS。

4. 配置反向代理

Caddy 可以很容易地配置反向代理,用于将请求转发到后端服务。假设你有一个后端 API 或应用运行在其他服务器或容器中。

4.1 配置反向代理

Caddyfile 中配置反向代理:

1
2
3
your-domain.com {
reverse_proxy localhost:5000
}

这将把所有访问 your-domain.com 的请求转发到本地的 localhost:5000(假设后端服务运行在 5000 端口)。

4.2 反向代理多个后端服务

你还可以配置多个后端服务进行负载均衡:

1
2
3
4
your-domain.com {
reverse_proxy /api/* localhost:5000 localhost:5001
reverse_proxy /app/* localhost:6000 localhost:6001
}

此配置会根据请求路径(如 /api/*/app/*)将请求分发到不同的后端服务。

5. 配置负载均衡

Caddy 提供了内置的负载均衡支持。你可以在 reverse_proxy 配置中指定多个后端服务,Caddy 会自动进行负载均衡。

5.1 配置负载均衡

1
2
3
4
5
your-domain.com {
reverse_proxy localhost:5000 localhost:5001 localhost:5002 {
lb_policy round_robin
}
}

上面的配置会将请求轮询地分发到 localhost:5000localhost:5001localhost:5002

5.2 负载均衡策略

Caddy 支持多种负载均衡策略,如:

  • round_robin(默认):轮询。
  • least_conn:最少连接数优先。
  • random:随机选择。

你可以通过设置 lb_policy 来选择负载均衡策略:

1
2
3
4
5
your-domain.com {
reverse_proxy localhost:5000 localhost:5001 localhost:5002 {
lb_policy least_conn
}
}

6. 配置 Caddy 以支持 HTTPS 和自动证书续期

Caddy 会自动管理 HTTPS 证书的获取和续期,无需额外配置。只要你的域名指向正确的 IP 地址,Caddy 就会自动通过 Let’s Encrypt 获取证书。

6.1 配置 DNS

确保你的域名的 DNS 记录指向运行 Caddy 的服务器的 IP 地址。

1
your-domain.com -> <your-server-ip>

7. 使用 Docker Compose 管理 Caddy

为了简化部署,可以使用 Docker Compose 来管理 Caddy 服务和配置。

7.1 创建 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3'

services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./site:/usr/share/caddy
- caddy_data:/data
- caddy_config:/config

volumes:
caddy_data:
caddy_config:

7.2 启动 Caddy 服务

运行以下命令启动 Caddy 服务:

1
docker-compose up -d

总结

通过本文,你学会了如何使用 Docker 部署 Caddy,并配置了以下功能:

  • 自动 HTTPS:Caddy 会自动为你提供免费的 SSL 证书并进行证书续期。
  • Web 服务:可以通过 Caddy 提供静态网站。
  • 反向代理:可以将请求转发到其他后端服务。
  • 负载均衡:Caddy 可以在多个后端服务之间进行负载均衡。

使用 Docker 和 Caddy 可以大大简化 Web 服务的部署与配置。如果需要更多自定义功能,Caddy 的文档中有丰富的选项可供参考。


Caddy Docker版本安装部署
https://blog.quickso.cn/2025/01/01/CaddyDocker版本安装部署/
作者
木子欢儿
发布于
2025年1月1日
许可协议