Files
makelore/.opencode/skills/deploy-publish-check/references/project-zip-package-requirements.md
2026-07-29 17:22:35 +08:00

40 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Works Square 项目 ZIP 打包契约
创建、检查或修复 Works Square 项目 ZIP 时使用本契约。服务端只接受可由 Docker Compose 构建和运行的安全 ZIP 包。
## 根目录和必需内容
ZIP 根目录直接包含 `niancode.yml``docker-compose.yml`、Compose build context 使用的源码、引用的 `Dockerfile*`、构建使用的 lock 文件,以及运行所需静态资源和配置。不能出现 `project/niancode.yml` 这种额外目录套壳。
## 大小、计数和路径安全
- ZIP 文件大小不得超过 `50 MB`
- 解压后总大小不得超过 `200 MB`
- 文件数不得超过 `2000`
- 禁止绝对路径、盘符路径、`..` 路径穿越、空路径片段、重复规范化路径和符号链接。
- 每个条目必须能被普通 ZIP 解压器读取。
默认排除 `node_modules/``.git/``build/``dist/``.next/``.nuxt/``.vite/``.dart_tool/``.pub-cache/``android/.gradle/``ios/Pods/``.venv/``venv/``__pycache__/``*.pyc``.pytest_cache/``.DS_Store`、真实 `.env`、证书、私钥和本地密钥。优先使用白名单,只加入实际构建和运行需要的文件。
## niancode.yml
根目录 UTF-8 YAML 必须声明 `runtime: compose``compose.file: docker-compose.yml`、存在于 Compose 的 `compose.public_service`,以及 `compose.public_port: 8080`
## Docker Compose
公开服务的容器内应用监听 `0.0.0.0:8080`,端口只写为 `127.0.0.1::8080`。禁止固定宿主机端口、非 loopback 绑定和仅写 `"8080"`
拒绝 `privileged: true``network_mode: host``pid: host``ipc: host``/var/run/docker.sock` 挂载、绝对宿主机路径挂载,以及绝对或包含 `..` 的 build context / Dockerfile 路径。多服务项目只让公开服务发布端口;浏览器所需 `/api/...` 由公开服务反向代理到 Compose 内部后端。
## Dockerfile
构建必须无交互,不依赖宿主机预装 Node、Python 或 Flutter不引用本地绝对路径。基础镜像必须可获取依赖安装尽量使用 lock 文件;语言版本约束必须与基础镜像提供的运行时一致。
## 本地验证链
依次记录 `docker compose config``build --pull=false``up -d``docker port`、HTTP 冒烟、`down -v`,以及重新打开 ZIP 后的结构、安全、大小和计数检查。Docker 不可用时,把未执行项标记为“未验证”或“失败/阻塞”。
## 页面交接
项目根目录 `works-publish.json` 供“部署与上传”页面读取,不是服务端 ZIP 校验必填项,也不能替代 ZIP 根目录的 Compose 文件。只有实际提交后才能记录提交成功。