本文档由 g2rain-admin-shell 的
# 部署
docs/operations/deployment.md 自动同步生成。# 构建(静态)
# 确保 CONTEXT_PATH / 端口已是具体值
npm ci
npm run build
产物位于 dist/,静态资源以 VITE_CONTEXT_PATH 为 base。
# 容器镜像
构建依赖 npm Registry 上的 @g2rain/*@1.0.0;镜像内执行 npm ci / npm install,不再拷贝本地 kits 制品。
./build.sh
# 等价:docker build -t g2rain/<project>:latest .
产物镜像需在 g2rain-deploy 的 services.conf / Compose 中登记后,由 ./update.sh <service> 拉取构建并启动。入口路径示例:/admin/。
# OpenResty 镜像(含 Application-DPoP)
模板提供 Dockerfile + nginx/default.conf.template + lua/:
- 本地生成密钥:
./scripts/generate-sign-keys.sh(或scripts/generate-sign-keys.ps1) - 将真实 IAM 公钥写入
lua/keys/iam-public-key.pem(勿提交) - 构建镜像时 不 把私钥打进层;运行时由 deploy 挂载
config/<project>/keys - 暴露
/lua/sign_code、/keys/iam-key-id、/keys/iam-public-key(另有 Context Path 前缀变体)
本地签名侧车(开发):
docker compose -f docker-compose.sign.yml up --build
开发环境可将 VITE_BACKEND_ORIGIN 指向签名侧车(仅测签名)或指向同时提供 /admin/api、/admin/auth、/admin/lua 的上游(与 main-shell 同款)。在 deploy 栈内由本容器 OpenResty 提供签名,无需侧车。
# Nginx 纯静态示例
参考 nginx/default.conf.example(无 Lua)。生产签名必须用 OpenResty 模板或等价边缘。
# 检查清单
- [ ] Context Path 与网关入口文档一致
- [ ] 私钥仅 volume / secret 注入,未进 Git / 镜像层
- [ ] 静态资源 404 回退正确
- [ ] 子应用
entry仅来自受信配置 - [ ] 生产
SSO_BASE_URL已注入(env-config.js)