docs(skill): set_application_env for container secrets

This commit is contained in:
Lon
2026-08-02 17:36:09 +08:00
parent 913588a369
commit dcddd3c3f9
2 changed files with 75 additions and 10 deletions

View File

@@ -22,7 +22,7 @@ metadata:
| 调 MCP 工具部署 | 让用户打开 Dokploy 管理面板 |
| 401 → 引导连接中心重拿 Key | 说「权限配置无法通过,去找管理员要 Dokploy 权限」 |
| 交付 `https://buxi….loncode.site` | 索要 `DOKPLOY_API_KEY` / Gitea Token / 面板账号 |
| 环境变量靠 plan`databases[]` 等)或代码默认 | 让用户去 Dokploy 改某个应用的 env |
| 业务密钥用 `set_application_env` 写入容器 env | 让用户去 Dokploy 改 env或把 `.env` 推进 Git |
**连接中心** `https://company-deploy-mcp.loncode.site/` = 飞书身份 + MCP 授权,**不是** Dokploy 面板。
**Dokploy** 只被控制面服务端调用,**业务用户与业务 Agent 默认不可见、不需要、不引导**。
@@ -147,12 +147,36 @@ list_projects
- ❌「企业部署连接中心不是 Dokploy所以你没法配 env——去找管理员开 Dokploy」
- ❌ 凭空编造 Dokploy URL
若用户要的是 **业务应用自定义密钥**(如第三方 API Key而 plan 又注入不了:
### 3.5 业务环境变量 / 密钥(容器 env
> 当前 MCP 会自动注入数据库连接(`databases[]`)和运行所需基础变量;
> **不提供**业务同学自助打开 Dokploy 改 env。
> 可选:① 非密钥配置进代码/配置文件;② 密钥由平台管理员走运维通道注入(不经过业务 Dokploy 账号);③ 应用支持启动后自助配置页。
> **我不会让你去申请 Dokploy 面板权限。**
**正确路径MCP** 写入 Dokploy 应用配置 → **容器进程环境变量**(不是 Git 里的 `.env` 文件)。
```text
# 项目须已 apply 过至少一次(有 mapping
list_application_env_keys({ repo, environment: "default" })
→ 只返回键名,永不返回值
set_application_env({
repo,
environment: "default",
vars: { "FEISHU_APP_ID": "...", "OPENAI_API_KEY": "..." },
# removeKeys: ["OLD_KEY"], # 可选删除
redeploy: true # 建议 true否则运行中容器可能仍用旧 env
})
→ 返回 updatedKeys / keys仅名称**响应永不包含 secret 值**
```
| 规则 | |
|------|--|
| `.env` 文件 | **禁止** push 进企业 Git本地可留但密钥用 `set_application_env` 注入 |
| 数据库连接 | 仍用 plan `databases[]` 自动注入;普通用户 **不能** 覆盖 `DATABASE_URL` 等受保护键 |
| 受保护键(非 admin | `DATABASE_URL``SUDA_DATABASE_URL``SERVER_*``PORT``FORCE_*``COMPANY_DEPLOY_SELF_HOST` |
| Dokploy 面板 | **禁止**引导用户打开改 env |
| 审计 | 控制面记录写入了哪些 **键名**,不记 value |
话术示例:
> 密钥不会进代码仓库。我会用企业部署 MCP 的 `set_application_env` 写到运行环境(容器 env并触发重新部署。请把需要的 KEY 和值发我(或确认本机已配置好后由我读取本地 `.env` **仅用于调用 MCP不 commit**)。
---
@@ -256,6 +280,8 @@ Webcurl -skI "$url"(证书首次可能 13 分钟)
| `apply_deployment_plan` | 真正发布 |
| `get_deployment_status` | 轮询 |
| `get_sanitized_logs` | 脱敏诊断 |
| `list_application_env_keys` | 列出容器 env **键名**(无值) |
| `set_application_env` | 合并/删除业务密钥到容器 env`redeploy:true` 使生效 |
| `reset_project_mapping` | 仅 mapping 脏了且用户/admin 确认(不删 Dokploy/Gitea 实体) |
---
@@ -312,7 +338,8 @@ Webcurl -skI "$url"(证书首次可能 13 分钟)
| 重部署丢数据 | 确认写 `/data`;同 repo+env 卷会复用 |
| Swarm 0/1 bind path | 控制面默认 volume见 status/logs |
| 要 PG/MySQL | plan `databases[]`,应用读 `DATABASE_URL` |
| 业务要自定义密钥 | §3.4 末段;**禁止**引导 Dokploy 改 env |
| 业务要自定义密钥 / 配环境变量 | **`set_application_env`**§3.5);禁止 `.env` 进 Git、禁止 Dokploy 面板 |
| 密钥写了但应用仍像没配 | `redeploy:true` 或再 apply`list_application_env_keys` 确认键名 |
| 妙搭模板白屏/平台 API | 非主路径;`stack-profiles`;勿堆网关适配 |
| `FORCE_AUTHN_*` 启动失败 | apply 会注入 boot env不等于业务可用 |
@@ -327,6 +354,7 @@ Webcurl -skI "$url"(证书首次可能 13 分钟)
| 我的项目 / 链接 | `list_projects` / `get_deployment_status` |
| 配额 | `get_my_quota` |
| 连不上 / 没权限 | **只**走 §2§3连接中心**禁止** Dokploy |
| 配密钥 / 环境变量 / API Key | §3.5 `set_application_env``redeploy:true` |
| 运维直连 Dokploy | 仅用户**明确**要求且本机有 `.env.deploy` → §8 |
| 妙搭应用 | 先边界说明;优先 `lark-apps`;自托管实验见 stack-profiles |
@@ -354,8 +382,8 @@ Webcurl -skI "$url"(证书首次可能 13 分钟)
| 自管登录与 DB 的 API | **支持** |
| 飞书妙搭 / `@lark-apaas/*` | **实验性**;不承诺登录/平台 API`stack-profiles.md` |
主路径承诺Dockerfile + 端口 + `/data` + 可选库 → **HTTPS 链接**
不承诺:模拟妙搭网关、业务自定义 env 面板、用户进入 Dokploy。
主路径承诺Dockerfile + 端口 + `/data` + 可选库 → **HTTPS 链接**;业务密钥经 `set_application_env` 进容器 env
不承诺:模拟妙搭网关、用户进入 Dokploy 面板
---