Makelore 2.0 initial clean snapshot
This commit is contained in:
@@ -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 文件。只有实际提交后才能记录提交成功。
|
||||
Reference in New Issue
Block a user