轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
wemakeservices/caddy-gen
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

caddy-gen Docker 镜像下载 - 轩辕镜像

caddy-gen 镜像详细信息和使用指南

caddy-gen 镜像标签列表和版本信息

caddy-gen 镜像拉取命令和加速下载

caddy-gen 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

caddy-gen
wemakeservices/caddy-gen
自动构建

caddy-gen 镜像详细信息

caddy-gen 镜像标签列表

caddy-gen 镜像使用说明

caddy-gen 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

caddy-gen是Caddy、docker-gen和forego的组合,通过容器标签自动生成Caddy配置,实现动态反向代理,解决Caddy静态配置局限,轻松应对应用扩展需求。
1 收藏0 次下载activewemakeservices镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

caddy-gen 镜像详细说明

caddy-gen 使用指南

caddy-gen 配置说明

caddy-gen 官方文档

caddy-gen

caddy-gen是Caddy、docker-gen和forego的完美组合,灵感来源于nginx-proxy。它通过docker-gen监听容器生命周期事件,动态生成Caddy配置,解决了Caddy静态配置在应用扩展时的局限性,实现轻松扩展。

核心功能与特性

  • 动态配置生成:基于docker-gen,在容器启动或停止时自动更新Caddy配置
  • 标签驱动配置:通过容器标签定义反向代理规则,无需手动修改配置文件
  • 多域名支持:通过virtual.host指定主域名,支持空格分隔多个域名
  • 域名别名与重定向:使用virtual.alias设置域名别名,自动重定向至主域名
  • 自动HTTPS:配置virtual.tls-email即可启用Let's Encrypt证书自动申请与续期
  • 灵活的自定义选项:支持自定义Caddyfile指令、导入外部配置文件、设置基础认证
  • 可扩展架构:支持自定义模板和全局配置,满足复杂场景需求

适用场景

  • 多容器应用的动态反向代理
  • 需要自动扩展的微服务架构
  • 开发/测试环境中快速部署多个Web服务
  • 需要自动管理HTTPS证书的生产环境
  • 需根据容器生命周期自动更新配置的场景

配置选项

caddy-gen通过Docker容器标签进行配置,核心思想是:每个带标签的服务通过virtual.host暴露域名,每个容器作为一个上游服务处理请求。

注意:v0.3.0版本引入Caddy2,带来不兼容变更。

主要配置标签

标签说明
virtual.host (必填)域名,无需包含http://或https://,多个域名用空格分隔
virtual.alias域名别名,如[***],会自动重定向至主域名
virtual.port容器暴露的端口,如React开发应用的3000
virtual.tls-emailACME账户邮箱,用于HTTPS证书管理(启用HTTPS必填)
virtual.tlsvirtual.tls-email的别名
virtual.host.directives自定义Caddyfile指令,内联到站点配置块
virtual.host.import从容器文件系统导入Caddyfile指令,需配合Caddy的import指令

基础认证选项

同时配置以下标签启用HTTP基础认证:

  • virtual.auth.path:认证生效的路径
  • virtual.auth.username:认证用户名
  • virtual.auth.password:base64编码的bcrypt哈希密码(可通过bcrypt-generator.com生成哈希,再用base64encode.org编码)

反向代理选项

标签说明
virtual.proxy.matcher仅匹配指定路径的请求进行反向代理
virtual.proxy.lb_policy负载均衡策略,默认round_robin
virtual.proxy.directives反向代理相关的自定义指令
virtual.proxy.import从容器文件系统导入反向代理指令

自定义模板与全局配置

通过环境变量支持自定义配置:

  • CADDY_TEMPLATE:挂载自定义模板文件路径,替换默认Caddy模板
  • CADDY_SNIPPET:挂载自定义片段文件路径,内容会前置到模板中,用于设置全局选项、定义代码片段或添加自定义地址块

构建时参数

支持通过构建参数自定义组件版本:

  • FOREGO_VERSION:指定forego版本
  • DOCKER_GEN_VERSION:指定docker-gen版本

使用方法

基础部署示例

以下示例通过docker-compose部署caddy-gen作为反向代理,代理whoami服务:

version: "3"
services:
  caddy-gen:
    container_name: caddy-gen
    image: "wemakeservices/caddy-gen:latest"
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro  # 需挂载Docker socket监听容器事件
      - ./caddy-info:/data/caddy  # 挂载卷备份证书
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - whoami

  whoami:  # 被代理的服务
    image: "katacoda/docker-http-server:v2"
    labels:
      - "virtual.host=myapp.com"  # 主域名(必填)
      - "virtual.alias=[***]"  # 域名别名(可选)
      - "virtual.port=80"  # 容器暴露端口
      - "virtual.tls-email=***"  # 启用HTTPS(必填邮箱)
      - "virtual.auth.path=/secret/*"  # 基础认证路径
      - "virtual.auth.username=admin"  # 基础认证用户名
      - "virtual.auth.password=JDJ5JDEyJEJCdzJYM0pZaWtMUTR4UVBjTnRoUmVJeXQuOC84QTdMNi9ONnNlbDVRcHltbjV3ME1pd2pLCg=="  # base64编码的bcrypt密码

证书备份

为确保HTTPS证书持久化,需挂载/data/caddy目录:

services:
  caddy-gen:
    volumes:
      - ./caddy-info:/data/caddy  # 证书将存储在本地./caddy-info目录

自定义反向代理请求头

通过virtual.proxy.directives修改反向代理请求头,如下示例使上游服务获取自身地址:

services:
  whoami:
    labels:
      virtual.host: myapp.com
      virtual.port: 80
      virtual.tls: ***
      virtual.proxy.directives: |
        header_up Host {http.reverse_proxy.upstream.hostport}

静态文件服务配置

通过virtual.host.directives配置静态文件服务,如下示例使myapp.com提供www目录下的文件,并将/api/*请求代理到whoami服务:

version: "3"
services:
  caddy-gen:
    image: "wemakeservices/caddy-gen:latest"
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./caddy-info:/data/caddy
      - ./www:/srv/myapp/www  # 挂载静态文件目录到容器
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - whoami

  whoami:
    image: "katacoda/docker-http-server:v2"
    labels:
      virtual.host: myapp.com
      virtual.port: 80
      virtual.tls: ***
      virtual.proxy.matcher: /api/*  # 仅代理/api/*路径
      virtual.host.directives: |
        root * /srv/myapp/www  # 静态文件根目录
        templates  # 启用模板功能
        file_server  # 启用文件服务

使用自定义Caddy模板

以下示例自定义模板实现HTTPS重定向和按域名日志分割:

自定义模板文件(./caddy/template):

(redirectHttps) {
  @http {
    protocol http
  }
  redir @http https://{host}{uri}
}

(logFile) {
  log {
    output file /var/caddy/{host}/logs {
      roll_keep_for 7
    }
  }
}

{{ $hosts := groupByLabel $ "virtual.host" }}
{{ range $h, $containers := $hosts }}
{{ range $t, $host := split (trim (index $c.Labels "virtual.host")) " " }}
{{ $tls = trim (index $c.Labels "virtual.tls") }}
{{ $host }} {
  {{ if $tls }}
  tls {{ $tls }}
  import redirectHttps
  {{ end }}
  reverse_proxy {
    lb_policy round_robin
    {{ range $i, $container := $containers }}
    {{ range $j, $net := $container.Networks }}
    to {{ $net.IP}}:{{ or (trim (index $container.Labels "virtual.port")) "80" }}
    {{ end }}
    {{ end }}
  }
  encode zstd gzip
  import logFile
}

docker-compose配置:

services:
  caddy-gen:
    volumes:
      - ./caddy/template:/tmp/caddy/template  # 挂载模板文件
    environment:
      CADDY_TEMPLATE: /tmp/caddy/template  # 指定自定义模板路径

设置Caddy全局选项

通过CADDY_SNIPPET设置全局选项,如下示例使用Let's Encrypt测试环境(避免证书申请频率限制):

全局选项片段文件(./caddy/global_options):

{
  acme_ca [***]
}

docker-compose配置:

services:
  caddy-gen:
    volumes:
      - ./caddy/global_options:/tmp/caddy/global_options  # 挂载片段文件
    environment:
      CADDY_SNIPPET: /tmp/caddy/global_options  # 指定片段路径
查看更多 caddy-gen 相关镜像 →

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像免费版与专业版有分别支持哪些镜像?

免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.