Makelore 2.0 initial clean snapshot

This commit is contained in:
inman
2026-07-29 17:22:35 +08:00
commit b8ca3f8eea
694 changed files with 139782 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
# 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 文件。只有实际提交后才能记录提交成功。