{"id":29360278,"url":"https://github.com/zhaopan/docker-caddy","last_synced_at":"2026-04-12T14:40:11.941Z","repository":{"id":303576542,"uuid":"1007601475","full_name":"zhaopan/docker-caddy","owner":"zhaopan","description":"caddy mongo mysql redis","archived":false,"fork":false,"pushed_at":"2025-07-08T09:40:07.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-08T10:42:35.712Z","etag":null,"topics":["caddy","docker-compose","dockerfile","make","mongo","mysql","redis"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhaopan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-24T08:43:16.000Z","updated_at":"2025-07-08T09:40:10.000Z","dependencies_parsed_at":"2025-07-08T10:42:41.122Z","dependency_job_id":"73965e56-1300-45d6-967a-97fee4aa01a4","html_url":"https://github.com/zhaopan/docker-caddy","commit_stats":null,"previous_names":["zhaopan/docker-caddy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zhaopan/docker-caddy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaopan%2Fdocker-caddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaopan%2Fdocker-caddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaopan%2Fdocker-caddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaopan%2Fdocker-caddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhaopan","download_url":"https://codeload.github.com/zhaopan/docker-caddy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaopan%2Fdocker-caddy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264411189,"owners_count":23603807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["caddy","docker-compose","dockerfile","make","mongo","mysql","redis"],"created_at":"2025-07-09T07:12:59.851Z","updated_at":"2026-04-12T14:40:11.934Z","avatar_url":"https://github.com/zhaopan.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Caddy 现代化开发脚手架\n\n基于 Docker Compose 的模块化开发环境，支持 **Standard (单机)**, **Redis-HA (高可用)** 和 **Full-Cluster (全栈集群)** 三种模式。\n\n## 核心特性\n\n- **身份适配叠加架构**：一个基础配置，通过插件化叠加实现功能增强。\n- **单命令统一管理**：通过 `Makefile` 极简控制（支持 `make up redis` 或 `make up MODE=cluster`）。\n- **智能数据管理**：通用服务（MySQL, Mongo 等）跨模式共享数据，Redis HA 模式独立隔离。\n- **全链路高可用**：支持 Caddy 多节点集群负载均衡及 Redis 哨兵集群。\n\n## 快速开始\n\n### 1. 环境准备\n\n```bash\n# 1. 克隆项目\ngit clone \u003crepository-url\u003e\ncd docker-caddy\n\n# 2. 准备环境变量\ncp .env.example .env\n# 编辑 .env 以配置密码和域名\n```\n\n### 2. 选择模式运行\n\n本项目支持三种运行模式，默认为 `standard`。\n\n| 模式 | 命令 | 说明 |\n| :--- | :--- | :--- |\n| **Standard (推荐开发)** | `make up` | 单节点 Caddy + 单节点 Redis，最省资源。 |\n| **Redis-HA (数据库增强)** | `make up MODE=redis-ha` | 将 Redis 升级为 1主2从3哨兵。 |\n| **Full-Cluster (全栈集群)** | `make up MODE=cluster` | 在 Redis-HA 基础上增加 3个 Caddy Worker 实现负载均衡。 |\n\n## 键盘侠指南 (常用命令)\n\n### 全局操作\n- `make up` : 启动当前模式下的所有服务。\n- `make logs` : 查看所有服务日志。\n- `make status` : 查看当前模式下的容器状态。\n- `make down` : **停止并摧毁** 当前模式下的所有资源。\n- `make clean` : **深度清理** 移除容器、网络及持久化数据（需确认）。\n- `make reload` : **热加载** 刷新 Caddy 配置（自动适配集群模式，无需重启）。\n- `make rebuild [service]` : **强制重构** 不使用缓存重新构建并重启服务。\n\n### 单个服务操作 (无需参数名)\n- `make up redis` : 仅启动/更新 Redis。\n- `make logs n8n` : 仅查看 n8n 日志。\n- `make restart mysql` : 重启 MySQL。\n- `make stop caddy` : 停止 Caddy。\n\n## 项目结构\n\n```txt\ndocker-caddy/\n├── docker-compose.yml          # [核心] 基础包，所有模式的基座\n├── docker-compose.redis-ha.yml # [插件] Redis 高可用增强包\n├── docker-compose.cluster.yml  # [插件] Caddy 集群增强包\n├── Makefile                    # [遥控] 统一管理入口\n├── .env                        # [私密] 端口、版本、密码配置\n│\n├── bin/                        # [脚本] 初始化与清理脚本\n├── caddy/                      # Caddy 自定义构建与站点配置\n├── mysql/                      # MySQL 配置\n├── redis/                      # Redis 配置定义\n├── n8n/                        # n8n 工作流相关逻辑\n│\n└── data/                       # 宿主机持久化数据\n    ├── mysql/                  # MySQL 数据 (共享)\n    ├── mongo/                  # MongoDB 数据 (共享)\n    ├── redis/                  # Redis 单机数据\n    ├── redis-ha/               # Redis HA 集群数据 (隔离)\n    └── cluster/                # Caddy 集群数据 (隔离)\n```\n\n## 注意事项\n\n1. **网络自动创建**：第一次运行 `make up` 时，会自动创建一个名为 `backend` 的外部网桥（172.18.0.0/16）。\n2. **模式切换**：如果您想从 `standard` 切换到 `cluster`，建议先执行 `make down` 清理旧容器，以防止容器名或端口冲突。\n3. **数据策略**：MySQL/Mongo/Postgres 等服务在所有模式下共享数据 (`./data/service_name`)；Redis 在 Standard 模式下使用 `./data/redis`，在 HA/Cluster 模式下使用 `./data/redis-ha/` 以避免冲突。\n\n## 本地开发 Tips\n\n1. **域名访问**：为了在本地浏览器访问，请将以下内容加入宿主机的 `hosts` 文件（Windows 路径：`C:\\Windows\\System32\\drivers\\etc\\hosts`）：\n   ```text\n   127.0.0.1 dev.com\n   127.0.0.1 www.dev.com\n   127.0.0.1 admin.dev.com\n   127.0.0.1 api.dev.com\n   127.0.0.1 grpc.dev.com\n   ```\n2. **宿主机通信**：容器内的 Caddy 已配置 `host.docker.internal` 映射。你可以直接在配置中引用宿主机服务（如 `reverse_proxy host.docker.internal:{YOUR-PORT}`）。\n3. **HTTPS 证书警告**：由于使用 `tls internal` 自签名证书，浏览器会弹出安全警告。\n   - **Chrome/Edge**：在页面任意位置直接输入 `thisisunsafe` 即可跳过。\n   - 或点击“高级” -\u003e “继续前往”。\n4. **端口占用**：请确保本地 80 和 443 端口未被其他程序（如 IIS、Nginx 宿主机版）占用。\n\n## 开源协议\n\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaopan%2Fdocker-caddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhaopan%2Fdocker-caddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaopan%2Fdocker-caddy/lists"}