CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Caddy 反向代理入门/课时/Docker 运行 Caddy
RawBlame
课时目录12 节

Caddy 反向代理入门

  1. 01Caddy 是什么
  2. 02安装与运行
  3. 03Caddyfile 语法
  4. 04自动 HTTPS
  5. 05反向代理
  6. 06双后端拓扑
  7. 07静态文件
  8. 08Docker 运行 Caddy
  9. 09Caddy vs Nginx
  10. 10K8s Ingress 对照
  11. 11排障
  12. 12综合练习

Docker 运行 Caddy

卷挂载 Caddyfile、证书持久化。

25 分钟

Docker 运行 Caddy

在容器中运行 Caddy 时,需挂载 Caddyfile、证书数据卷 与(可选)静态目录。对照 docker-compose 与 Nginx 容器化,Caddy 证书持久化到 /data 尤为关键。

学习目标

  • 编写 Compose 服务定义与端口映射
  • 持久化 ACME 证书,避免容器重建重复申请
  • 在 Docker 网络中用服务名作 upstream

核心内容

docker-compose.yml 示例

services:
  caddy:
    image: caddy:2-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
      - ./admin/dist:/var/www/admin/dist:ro
    depends_on:
      - backend
      - platform
    networks:
      - web

  backend:
    build: ./backend
    expose:
      - "8080"
    networks:
      - web

  platform:
    build: ./platform
    expose:
      - "3000"
    networks:
      - web

volumes:
  caddy_data:
  caddy_config:

networks:
  web:

caddy_data 存 Let's Encrypt 证书;删卷会导致重新 ACME 申请(注意速率限制)。

Caddyfile(Compose 网络)

www.coderoadmap.cn {
    handle /api/* {
        uri strip_prefix /api
        reverse_proxy backend:8080
    }
    handle {
        reverse_proxy platform:3000
    }
}

服务名解析见 docker-network。生产 CodeRoadMap 仍用宿主机 Nginx;此 Compose 适合本地全栈或 CI 冒烟。

重载与调试

docker compose up -d caddy
docker compose exec caddy caddy validate --config /etc/caddy/Caddyfile
docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
docker compose logs -f caddy

修改 Caddyfile 后 reload,无需重建镜像。DNS 需将域名指宿主机公网 IP(dns-records)。

与 K8s 过渡

Compose 验证拓扑后,可迁移至 kubernetes-essentials Ingress;Caddy 亦可用作 Ingress Controller(caddy-k8s)。

练习

  • 用 Compose 启动 Caddy + backend + platform 并完成 curl /api/tracks
  • 删除 caddy_data 卷观察证书是否重新申请
  • 对比 Nginx 容器与 Caddy 容器的卷挂载差异
  • 小结

    Docker 跑 Caddy:挂 Caddyfile + /data 卷;upstream 用 Compose 服务名。 下一课 Caddy vs Nginx。

    加载本节练习…
    ← 上一课静态文件下一课 →Caddy vs Nginx