refactor: 环境变量统一为 .env.app 单文件 + 清理死配置

- 新增 .env.app.example 统一模板(两套 compose 共用,数据库按模式分节注释),删除 .env.self-hosted.example / .env.production.example
- 部署指南与 README 的 --env-file 引用统一为 .env.app;.gitignore / .dockerignore 白名单同步调整
- runtime-env.ts 移除零消费的 MCP_API_KEY / COLLECTION_MCP_URL / COLLECTION_MCP_KEY 遗留声明
- .dockerignore 补充 .dev.vars 排除;mcp-task-server 测试改读新模板
This commit is contained in:
ABAPPLO
2026-08-27 11:42:02 +08:00
parent cb010b6c5b
commit db5c7522f7
9 changed files with 72 additions and 108 deletions

View File

@@ -19,10 +19,10 @@
第一版按单实例 KOC 服务设计。MySQL 和上传目录均持久化。以后需要横向扩容时,可以把上传卷换成共享 NAS;对象存储接口已与业务代码分离。
仓库提供两套编排文件,按数据库归属选用:
仓库提供两套编排文件,按数据库归属选用,共用同一份环境文件 `.env.app`(模板 `.env.app.example`):
- `docker-compose.self-hosted.yml`:自带 MySQL 容器与数据卷,适合独立服务器或没有公共数据库的环境;
- `docker-compose.production.yml`:只包含 KOC 服务与入口 Nginx,直连公司公共 MySQL(要求 MySQL 8 + utf8mb4,账号需对目标库有建表与读写权限),配套环境模板 `.env.production.example`。
- `docker-compose.production.yml`:只包含 KOC 服务与入口 Nginx,直连公司公共 MySQL(要求 MySQL 8 + utf8mb4,账号需对目标库有建表与读写权限)。
两套文件的入口 Nginx 都建议保留:它除了反向代理,还托管 `/koc/` 领取页静态文件、`/api/mcp` 长连接规则与 85 MB 上传限制,公司网关只需把域名转发到容器的 `HTTP_PORT`。
@@ -43,10 +43,10 @@
git clone ssh://git@gta.gbotai.cn:42001/wufengping/koc-loop.git
cd koc-loop
git checkout main
cp .env.self-hosted.example .env.self-hosted
cp .env.app.example .env.app
```
编辑 `.env.self-hosted`。必须替换所有 `replace-with-*` 占位值:
编辑 `.env.app`。必须替换所有 `replace-with-*` 占位值(公共 MySQL 模式还需把 `MYSQL_HOST` 指向公司实例):
| 变量 | 用途 |
| --- | --- |
@@ -75,23 +75,21 @@ cp .env.self-hosted.example .env.self-hosted
## 4. 首次启动
```bash
docker compose --env-file .env.self-hosted \
docker compose --env-file .env.app \
-f docker-compose.self-hosted.yml up -d --build
```
生产环境使用公司公共 MySQL 时改用:
```bash
cp .env.production.example .env.production
# 编辑 .env.production:MYSQL_HOST 指向公共实例,其余变量同 self-hosted
docker compose --env-file .env.production \
docker compose --env-file .env.app \
-f docker-compose.production.yml up -d --build
```
应用容器启动时会先执行同一套数据库迁移脚本,成功后才启动 KOC 服务。查看状态(生产模式把 `-f` 与 `--env-file` 换成对应文件即可):
应用容器启动时会先执行同一套数据库迁移脚本,成功后才启动 KOC 服务。查看状态(生产模式把 `-f` 换成对应编排文件即可):
```bash
docker compose --env-file .env.self-hosted \
docker compose --env-file .env.app \
-f docker-compose.self-hosted.yml ps
curl -fsS http://127.0.0.1:${HTTP_PORT:-80}/api/health
@@ -205,7 +203,7 @@ UPLOAD_DIR=/data/koc/uploads \
```bash
git pull
docker compose --env-file .env.self-hosted \
docker compose --env-file .env.app \
-f docker-compose.self-hosted.yml up -d --build
```
@@ -267,7 +265,7 @@ KOC LOOP 的企业微信通知是**单向外发**:每天 09:00 与定时采集
- 「测试群机器人」:群内收到 `[KOC LOOP 测试] 群机器人连通性正常,时间 ...` 即配置成功;
- 合作方行的「测试发送」:对应外部联系人收到同样格式的测试消息即绑定正确。
如果面板显示「未配置」但已填环境变量,先确认容器加载了新的 `.env.self-hosted`(重启服务),再回到该页面点「刷新状态」。
如果面板显示「未配置」但已填环境变量,先确认容器加载了新的 `.env.app`(重启服务),再回到该页面点「刷新状态」。
### 11.5 任务发布到企微客户群(企业群发)