Skip to content

Commit 4c825c9

Browse files
docs(readme): add Chinese translation and language switch link
- Add Chinese translation README (README_cn.md) with full documentation - Add language switch link in English README header Co-Authored-By: Hagicode <noreply@hagicode.com>
1 parent e070b26 commit 4c825c9

2 files changed

Lines changed: 346 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Docker Compose Builder
22

3+
[简体中文](./README_cn.md)
4+
35
A modern Docker Compose configuration generator for Hagicode, built with React + TypeScript + Vite + shadcn/ui.
46

57
## Features

README_cn.md

Lines changed: 344 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,344 @@
1+
# Docker Compose 构建器
2+
3+
[English](./README.md)
4+
5+
一个为 HagiCode 构建的现代化 Docker Compose 配置生成器,使用 React + TypeScript + Vite + shadcn/ui。
6+
7+
## 功能特性
8+
9+
- **交互式配置表单**:分步配置,实时验证
10+
- **Docker Compose YAML 生成**:根据用户输入自动生成 YAML 文件
11+
- **多种数据库选项**:支持内置 PostgreSQL 或外部数据库连接
12+
- **显式执行器配置**:并行启用 Claude/Codex/Copilot CLI/CodeBuddy/IFlow/OpenCode,无需默认 provider 路由
13+
- **Copilot CLI 支持**:可选的 `copilot-cli` 执行器支持,标准 HagiCode 镜像标签固定为 `0`
14+
- **局域网 HTTPS 支持**:可选的 Caddy 反向代理,使用 `tls internal`
15+
- **卷管理**:配置数据持久化的卷挂载
16+
- **用户权限**:Linux 用户权限映射(PUID/PGID)支持
17+
- **响应式设计**:在桌面和移动设备上都能正常工作
18+
- **本地存储持久化**:配置保存到 localStorage,方便使用
19+
- **一键复制/下载**:将生成的 YAML 复制到剪贴板或下载为文件
20+
- **Caddyfile 复制工作流**:预览和复制 Caddyfile(无需文件下载)
21+
- **SEO 优化**:完整的搜索引擎优化,包括 meta 标签、Open Graph、Twitter Cards 和结构化数据
22+
- **多语言支持**:国际化(i18n),支持英文和中文
23+
24+
## 快速开始
25+
26+
### 安装
27+
28+
```bash
29+
npm install
30+
```
31+
32+
### 开发
33+
34+
```bash
35+
npm run dev
36+
```
37+
38+
应用程序可在 `http://localhost:5174` 访问
39+
40+
### 构建
41+
42+
```bash
43+
npm run build
44+
```
45+
46+
### 预览
47+
48+
```bash
49+
npm run preview
50+
```
51+
52+
### 部署到 GitHub Pages
53+
54+
#### 自动部署(GitHub Actions)
55+
56+
项目配置了 GitHub Actions,当代码推送到 `main` 分支时自动部署到 GitHub Pages。
57+
58+
#### 手动部署
59+
60+
```bash
61+
npm run deploy
62+
```
63+
64+
这将构建应用程序并部署到 `gh-pages` 分支。
65+
66+
### GitHub Pages 配置
67+
68+
1. 确保您的仓库已启用 GitHub Pages:
69+
- 转到仓库设置
70+
- 导航到 "Pages" 部分
71+
- 在 "Build and deployment" 下,选择 "Deploy from a branch"
72+
- 选择 "gh-pages" 分支和 "/ (root)" 文件夹
73+
- 点击 "Save"
74+
75+
2. 应用程序将在以下地址可用:
76+
`https://<your-username>.github.io/docker-compose-builder/`
77+
78+
### 部署故障排除
79+
80+
- **404 错误**:确保 GitHub Pages 正确配置且 `gh-pages` 分支存在
81+
- **资源未加载**:检查 `vite.config.ts` 是否有正确的 `base` 配置
82+
- **构建失败**:使用 `npm ci` 验证依赖是否正确安装
83+
- **权限**:确保 GitHub Actions 工作流具有必要的权限
84+
85+
### 配置选项
86+
87+
#### 基本设置
88+
- **HTTP 端口**:应用程序监听的端口
89+
- **容器名称**:Docker 容器名称
90+
- **镜像标签**:要使用的 Docker 镜像标签
91+
- **主机操作系统**:目标操作系统(Windows/Linux)
92+
- **镜像 Registry**:Docker 镜像 Registry(Docker Hub/Azure ACR)
93+
94+
#### 数据库
95+
- **内置 PostgreSQL**:内置 PostgreSQL 服务
96+
- **外部数据库**:连接到外部 PostgreSQL 实例
97+
- **卷类型**:命名卷或绑定挂载用于数据存储
98+
99+
#### 许可证
100+
- **公共测试密钥**:默认公共测试许可证
101+
- **自定义许可证密钥**:使用您自己的许可证密钥
102+
103+
#### 执行器 & API 配置
104+
105+
- **并行启用**:Claude、Codex、Copilot CLI、CodeBuddy、IFlow CLI 和 OpenCode 可以一起启用(非互斥)
106+
- **仅显式选择**:生成的 YAML 仅导出启用的执行器分支;不再写入 `AI__Providers__DefaultProvider`
107+
- **能力 vs 路由**:启用一个执行器不会禁用其他执行器,运行时选择现在必须是显式的
108+
109+
##### 显式执行器矩阵
110+
111+
| 执行器 | 表单字段 | 验证 | 导出行为 |
112+
|----------|-------------|------------|-----------------|
113+
| Claude | Provider 预设、令牌、可选自定义端点 | 需要令牌;自定义预设也需要端点 URL | 为启用的 Claude 分支发出 `ANTHROPIC_*` 变量 |
114+
| Codex | `CODEX_API_KEY`、可选 `CODEX_BASE_URL` | 启用时需要 `CODEX_API_KEY` | 仅发出 `CODEX_*` 变量 |
115+
| Copilot CLI | `COPILOT_API_KEY`、可选 `COPILOT_BASE_URL`、标准镜像标签 `0`、工作区切换 | 启用时需要 API 密钥 | 发出 `COPILOT_*` 变量和可选边车服务,不更改标准 HagiCode 镜像标签 |
116+
| CodeBuddy | `CODEBUDDY_API_KEY``CODEBUDDY_INTERNET_ENVIRONMENT` | 启用时需要 API 密钥;网络环境默认为 `ioa` 但仍可编辑 | 发出显式 CodeBuddy provider/platform 密钥加上 `CODEBUDDY_*` 变量 |
117+
| IFlow CLI | 仅信息分支 | 不需要发明的私有 `IFLOW_*` 字段 | 发出显式 IFlow provider/platform 引导密钥,并期望先前的 CLI 登录或挂载的运行时状态 |
118+
| OpenCode | 可选托管运行时模型 | 除了正常部署验证外不需要额外必填字段 | 发出显式 OpenCode provider 注册加上 `AI__OpenCode__*` 托管运行时密钥 |
119+
120+
##### Copilot CLI 运行时说明
121+
122+
- **模板 ID**`copilot-cli`(为显式模板流程保留)
123+
- **必需环境**`COPILOT_API_KEY`
124+
- **标准标签合约**:标准 HagiCode 镜像标签保持固定在 `0`
125+
- **可选环境**`COPILOT_BASE_URL`
126+
- **工作区挂载**:可选的绑定挂载到 `/workspace`
127+
128+
发布索引元数据仍可用于兼容性检查和未来显式 Copilot 模板流程。标准构建器默认值和刷新路径将 `imageTag` 保持在 `0`
129+
130+
##### CodeBuddy、IFlow 和 OpenCode 说明
131+
132+
- CodeBuddy 导出现在依赖于显式 provider/platform 注册,而不是已移除的默认 provider 路由。提供 `CODEBUDDY_API_KEY`,并使 `CODEBUDDY_INTERNET_ENVIRONMENT` 与您的 CLI 登录上下文保持一致。
133+
- IFlow 导出保持为文档化的引导合约 `iflow --experimental-acp --port {port}`。构建器故意不发明的额外 `IFLOW_*` 变量;您仍然需要先前的 `iflow` 登录或等效的挂载运行时状态。
134+
- OpenCode 导出使用统一镜像中已文档化的托管运行时合约。构建器显式发出 `AI__OpenCode__*` 设置,不依赖回退默认执行器。
135+
136+
应用程序从 docs 仓库 `https://docs.hagicode.com/presets/claude-code/providers/` 动态加载 provider 配置。可用的 provider 包括:
137+
138+
- **Anthropic Official**:官方 Anthropic API
139+
- **Zhipu AI (ZAI)**:具有 Anthropic 兼容 API 的中国 AI provider
140+
- **阿里云 DashScope**:阿里云的 AI 服务,具有 Anthropic 兼容 API
141+
- **MiniMax**:具有 Anthropic 兼容 API 的 MiniMax AI 服务
142+
- **Custom**:具有 Anthropic 兼容接口的自定义 API 端点
143+
144+
##### Provider 配置回退
145+
146+
应用程序使用三层回退策略获取 provider 配置:
147+
148+
1. **主要**:从 docs 仓库获取(`https://docs.hagicode.com/presets/claude-code/providers/`
149+
2. **回退**:使用嵌入式备份配置(包含在代码中)
150+
3. **遗留**:使用硬编码常量(为向后兼容)
151+
152+
这确保应用程序始终可用,即使 docs 仓库暂时不可用。
153+
154+
##### 环境变量覆盖
155+
156+
对于本地开发,您可以覆盖 docs 仓库 URL:
157+
158+
```bash
159+
# 覆盖以使用本地 docs 仓库
160+
VITE_PRESETS_BASE_URL=http://localhost:3000 npm run dev
161+
162+
# 或指定不同的远程 URL
163+
VITE_PRESETS_BASE_URL=https://your-custom-docs-url.com npm run dev
164+
```
165+
166+
默认值为 `https://docs.hagicode.com`
167+
168+
您还可以覆盖用于 Copilot 模板默认值的发布索引 URL:
169+
170+
```bash
171+
VITE_RELEASE_INDEX_URL=https://your-release-index-url/index.json npm run dev
172+
```
173+
174+
##### 嵌入式备份同步
175+
176+
嵌入式备份配置(`src/lib/docker-compose/providerConfigLoader.ts`)与 docs 仓库预设同步。当在 docs 仓库中添加新 provider 或更新现有 provider 时,更新 `EMBEDDED_BACKUP` 常量以包含最新数据。
177+
178+
#### 卷挂载
179+
- **工作目录**:您的代码仓库路径
180+
- **根用户警告**:检测并警告 root 拥有的目录
181+
- **用户权限映射**:Linux 的 PUID/PGID 配置
182+
- **Copilot 工作区切换**:Copilot CLI 服务块的可选 `/workspace` 挂载
183+
184+
#### HTTPS(仅完整自定义模式)
185+
- **启用 HTTPS 代理**:切换 Caddy 反向代理生成
186+
- **HTTPS 端口**:默认 `443`,支持自定义端口
187+
- **局域网 IP 地址**:用于生成的 Caddy 监听器
188+
- **Caddyfile 预览 + 复制**:复制内容并保存为 `Caddyfile`,与 `docker-compose.yml` 并列
189+
- **指南**:参见 `docs/https-certificate-guide.md`
190+
191+
## 生成的 Docker Compose 文件
192+
193+
生成器创建完整的 `docker-compose.yml` 文件,包括:
194+
- HagiCode 应用程序服务
195+
- PostgreSQL 服务(如果选择内置数据库)
196+
- 网络配置
197+
- 卷定义
198+
- 健康检查配置
199+
- 环境变量
200+
- Copilot CLI 服务块(当启用 `copilot-cli` 执行器时)
201+
- 当这些能力启用时,显式的 CodeBuddy、IFlow 和 OpenCode 执行器分支
202+
203+
## 分析配置
204+
205+
应用程序集成了两个分析平台,用于全面的用户行为追踪:
206+
207+
### Microsoft Clarity
208+
209+
- **用途**:用户行为分析,包括热图、会话录制和用户旅程
210+
- **项目 ID**`v6zgmrg1q7`
211+
- **环境**:仅生产环境
212+
- **实现**:通过 `src/services/clarityService.ts` 的单例服务模式
213+
214+
### 百度统计
215+
216+
- **用途**:针对中国用户的网络分析,跟踪页面浏览量、流量来源和用户行为
217+
- **分析 ID**`26c9739b2f3cddbe36c649e0823ee2de`(默认)
218+
- **环境**:仅生产环境
219+
- **实现**:直接在 `index.html` 中嵌入脚本
220+
221+
### 配置
222+
223+
分析 ID 可以通过环境变量配置:
224+
225+
```bash
226+
# 用于本地构建
227+
VITE_BAIDU_ANALYTICS_ID=your_analytics_id npm run build
228+
229+
# 用于 GitHub Actions(在仓库 secrets 中配置)
230+
BAIDU_ANALYTICS_ID=26c9739b2f3cddbe36c649e0823ee2de
231+
```
232+
233+
**默认分析 ID**
234+
- builder.hagicode.com: `26c9739b2f3cddbe36c649e0823ee2de`
235+
- docs.hagicode.com: `04ac03637b01a1f4cc0bdfa376387fe5`
236+
- hagicode.com: `43081dabdf7dd7249f20795e76c2f017`
237+
238+
### 验证
239+
240+
在生产环境中验证分析集成:
241+
242+
1. 打开浏览器 DevTools(F12)
243+
2. 转到 Network 面板
244+
3. 检查以下请求:
245+
- `https://hm.baidu.com/hm.js?`(百度统计)
246+
4. 验证 Clarity 正在 Clarity Dashboard 中记录会话
247+
248+
## 技术栈
249+
250+
- **React 18** 配合 TypeScript
251+
- **Vite** - 构建工具和开发服务器
252+
- **shadcn/ui** - 组件库
253+
- **Tailwind CSS** - 样式
254+
- **Radix UI** - 无头 UI 原语
255+
- **Redux Toolkit** - 状态管理
256+
- **Sonner** - Toast 通知
257+
- **React Syntax Highlighter** - 代码高亮
258+
259+
## 项目结构
260+
261+
```
262+
src/
263+
├── components/
264+
│ ├── ui/ # shadcn/ui 组件
265+
│ └── docker-compose/ # Docker Compose 特定组件
266+
├── lib/
267+
│ ├── docker-compose/ # 类型定义、工具和状态管理
268+
│ └── store.ts # Redux store 配置
269+
├── pages/ # 主页面组件
270+
└── hooks/ # 自定义 React hooks
271+
```
272+
273+
## 浏览器支持
274+
275+
- Chrome/Edge(最新版本)
276+
- Firefox(最新版本)
277+
- Safari(最新版本)
278+
279+
## SEO 配置
280+
281+
## Copilot 故障排除
282+
283+
有关常见 Copilot 模板问题(元数据获取失败、无效镜像标签、缺少环境变量),请参阅:
284+
285+
- `docs/copilot-cli-troubleshooting.md`
286+
287+
应用程序包含全面的 SEO(搜索引擎优化)功能:
288+
289+
### 功能特性
290+
291+
- **Meta 标签**:完整的 HTML meta 标签,包括标题、描述、关键词
292+
- **Open Graph**:在 Facebook、LinkedIn 等平台上增强的社交媒体分享
293+
- **Twitter Cards**:在 Twitter 上分享时优化的卡片显示
294+
- **结构化数据**:WebApplication、SoftwareApplication 和 Organization 的 JSON-LD Schema.org 标记
295+
- **站点地图**:用于搜索引擎爬虫的 XML 站点地图(`/sitemap.xml`
296+
- **Robots.txt**:搜索引擎爬虫配置(`/robots.txt`
297+
- **规范 URL**:防止重复内容问题
298+
- **Hreflang 标签**:多语言 SEO 支持
299+
300+
### 自定义
301+
302+
SEO 配置集中在 `src/config/seo.ts`。您可以自定义:
303+
304+
- 网站标题和描述
305+
- 关键词
306+
- 社交媒体图片
307+
- 默认语言环境和替代语言
308+
- 组织信息
309+
310+
### 动态 SEO 更新
311+
312+
可以使用 `src/lib/seo/utils.ts` 中的工具函数动态更新 SEO 标签:
313+
314+
```typescript
315+
import { updateSEO } from './lib/seo/utils';
316+
317+
// 更新特定页面的 SEO
318+
updateSEO({
319+
title: '自定义页面标题',
320+
description: '自定义描述',
321+
image: '/custom-image.png'
322+
});
323+
```
324+
325+
### 验证工具
326+
327+
使用这些在线工具测试您的 SEO 实现:
328+
329+
- **Google Lighthouse**:内置于 Chrome DevTools - 测试 SEO 性能
330+
- **Facebook Sharing Debugger**https://developers.facebook.com/tools/debug/
331+
- **Twitter Card Validator**https://cards-dev.twitter.com/validator
332+
- **Google Rich Results Test**https://search.google.com/test/rich-results
333+
- **Schema Markup Validator**https://validator.schema.org/
334+
335+
### 添加自定义 Open Graph 图片
336+
337+
添加自定义 OG 图片:
338+
339+
1.`public/og-image.png` 创建图片(推荐尺寸:1200x630px)
340+
2. 更新 `src/config/seo.ts` 中的 `image` 属性
341+
342+
## 许可证
343+
344+
MIT

0 commit comments

Comments
 (0)