Cady部署教程

Caddy 是一个强大的、自动化的 Web 服务器,以其自动 HTTPS 功能而闻名。相比 Nginx,它配置更简单,非常适合部署静态网站或作为反向代理。使用 Docker 部署 Caddy 能够让你利用其所有优点,并且保持环境的干净和可移植性。


1. 安装 Docker

首先,你需要确保你的系统上已经安装了 Docker。如果你还没有安装,可以访问 Docker安装教程,根据你的操作系统找到对应的安装指南并进行安装。


2. 拉取 Caddy 镜像

我们将从 Docker Hub 上拉取官方的 Caddy 镜像。打开终端或命令提示符,运行以下命令:

Bash

1
docker pull caddy

3. 部署一个基本静态网站

Caddy 的一个核心优势是它的简洁性。要部署一个静态网站,你只需要一个简单的配置文件和一个网站目录。

准备文件

在你的本地文件系统中,创建一个目录来存放你的网站内容和 Caddy 配置文件,比如 ~/caddy_website

1
mkdir -p ~/caddy_website/html

~/caddy_website/html 目录下,创建一个 index.html 文件:

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head>
<title>My Caddy Website</title>
</head>
<body>
<h1>Welcome to my website, served by Caddy!</h1>
</body>
</html>

接下来,创建一个 Caddy 的配置文件,通常命名为 Caddyfile。在 ~/caddy_website/ 目录下创建一个名为 Caddyfile 的文件,并添加以下内容:

代码段

1
2
3
4
:80

root * /usr/share/caddy/html
file_server

这个 Caddyfile 文件的意思是:

  • :80:Caddy 将监听 80 端口。

  • root * /usr/share/caddy/html:设置网站的根目录为容器内部的 /usr/share/caddy/html

  • file_server:启用静态文件服务,这意味着 Caddy 会自动处理对文件的请求。

运行 Caddy 容器

现在,我们将把这些本地目录映射到 Caddy 容器中,并运行它。

1
2
3
4
5
6
docker run -d \
--name my-caddy-site \
-p 80:80 \
-v ~/caddy_website/html:/usr/share/caddy/html \
-v ~/caddy_website/Caddyfile:/etc/caddy/Caddyfile \
caddy
  • --name my-caddy-site:为容器指定一个名称。

  • -p 80:80:将宿主机的 80 端口映射到容器的 80 端口。

  • -v ~/caddy_website/html:/usr/share/caddy/html:将本地的 html 目录映射到 Caddy 容器中默认的网站根目录。

  • -v ~/caddy_website/Caddyfile:/etc/caddy/Caddyfile:将本地的 Caddyfile 配置文件映射到容器中 Caddy 的配置目录。

容器成功运行后,你可以在浏览器中访问 http://localhost,你将看到你自定义的 index.html 页面。


4. 部署反向代理和自动 HTTPS

这是 Caddy 最强大的功能。你只需几行配置,就可以让 Caddy 为你的域名自动获取、管理和续订 SSL/TLS 证书。

准备文件

假设你有一个域名,例如 your-domain.com,并且你想要将请求代理到运行在 localhost:3000 的后端服务。

修改你的 Caddyfile 文件,添加以下内容:

代码段

1
2
3
your-domain.com {
reverse_proxy localhost:3000
}
  • your-domain.com:这是你的域名。Caddy 会自动为这个域名申请和配置 HTTPS 证书。

  • reverse_proxy localhost:3000:这行配置将所有指向 your-domain.com 的请求转发到本地的 3000 端口。

运行容器

由于 Caddy 需要访问 80 和 443 端口来获取证书,并且需要一个持久化的卷来存储证书数据,我们需要修改运行命令。

1
2
3
4
5
6
7
docker run -d \
--name caddy-proxy \
-p 80:80 \
-p 443:443 \
-v ~/caddy_website/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
caddy
  • -p 80:80 -p 443:443:映射 HTTP 和 HTTPS 的标准端口。

  • -v caddy_data:/data:创建一个 Docker 数据卷来持久化存储证书、日志等重要数据。这可以确保即使容器重启或删除,你的证书也不会丢失。

现在,当你将你的域名 DNS 解析到你的服务器 IP 地址,并访问 https://your-domain.com 时,Caddy 会自动为你处理证书、HTTPS 和反向代理。


5. 管理和维护

  • 查看运行中的容器

    1
    docker ps
  • 停止容器

    1
    docker stop caddy-proxy
  • 启动已停止的容器

    1
    docker start caddy-proxy
  • 删除容器

    1
    docker rm caddy-proxy
  • 删除镜像

    1
    docker rmi caddy

通过以上步骤,你就可以轻松地使用 Docker 部署 Caddy,无论是作为静态文件服务器还是强大的反向代理。


Cady部署教程
http://tanzipeng.github.io/p/640ca9b77a1e4865b5aca17d3063850d/
作者
Tan ZiPeng
发布于
2025年9月10日
许可协议