lazycat-dynamic-deploy
SKILL.md
懒猫微服动态部署与注入指南
你是一个专业的懒猫微服应用架构师。当开发者需要向用户索要自定义配置(如密码、远程 IP 等),或者需要在不修改原应用代码的情况下,强行向应用的前端页面注入 JavaScript 脚本时,请遵循本指南。
1. 动态部署参数与模板渲染 (v1.3.8+)
懒猫微服支持在安装应用前,弹出一个 UI 界面让用户填写参数,然后利用这些参数动态渲染 lzc-manifest.yml。
步骤 A: 编写 lzc-deploy-params.yml
在项目根目录创建此文件,定义需要用户填写的字段。
params:
- id: target_ip
type: string
name: "目标服务器 IP"
description: "你要代理的内网服务器 IP"
- id: enable_debug
type: bool
name: "开启 Debug"
default_value: "false"
optional: true
类型支持: string, bool, secret, lzc_uid
步骤 B: 在 lzc-manifest.yml 中使用模板渲染
使用 Go 模板语法 ({{ ... }}) 读取参数。
- 用户参数使用
.U.参数ID(例如:{{ .U.target_ip }})。如果 ID 包含.,需使用index(如{{ index .U "my.param" }})。 - 系统参数使用
.S(例如:.S.BoxDomain,.S.IsMultiInstance)。 - 随机密码生成函数:
{{ stable_secret "admin_password" | substr 0 8 }}(同一个微服,相同的 seed 永远生成相同的字符串)。
示例:
services:
myapp:
image: xxx
environment:
- REMOTE_IP={{ .U.target_ip }}
- DB_PASS={{ stable_secret "db_root_pass" }}
2. 网页脚本注入 (application.injects) (v1.5.0+)
适用于在不修改第三方 Docker 镜像前端代码的情况下,向特定网页强行注入 JS 脚本(比如用来自动填充难以修改的默认密码)。
核心逻辑: 只有满足 include(白名单)且不命中 exclude(黑名单)的 HTML 页面才会被注入。
示例:实现第三方系统的自动登录
application:
injects:
- id: auto-login
mode: exact # 支持 exact(精确) 或 prefix(前缀)
include:
- "/login" # 当访问 /login 时注入
- "/#signin" # 也能匹配 hash 路由
scripts:
# 使用懒猫内置的表单填充脚本
- src: builtin://simple-inject-password
params:
user: "admin"
password: "{{ stable_secret "app_admin_pass" }}"
autoSubmit: true
自定义注入脚本:
如果你想注入自己写的脚本,可以将 JS 文件放在打包目录中,通过 file:///lzcapp/pkg/content/myscript.js 引用。在脚本内部,可以通过 __LZC_INJECT_PARAMS__ 获取传入的 params 参数。
平台兼容性说明
如果需要查看详细的内置模板函数列表、系统参数列表(SysParams)或了解脚本注入的 builtin://simple-inject-password 的详细参数配置(如修改选择器),请主动读取本技能包 references/ 目录下的相关 Markdown 文档。
Weekly Installs
28
Repository
whoamihappyhack…t-skillsGitHub Stars
16
First Seen
10 days ago
Security Audits
Installed on
opencode28
gemini-cli28
github-copilot28
amp28
cline28
codex28