2.7 KiB
2.7 KiB
T20 S4 镜像批(代码层)测试报告
一、 测试背景
T20 加固设计中的 I1(容器以非 root 运行 + 资源限制)与 I4(数据库容器初始化脚本统一)长期未实施,属 planned-tasks-closeout-plan P5 批次。本批完成代码/compose 层合入;共享环境部署需另授权。
二、 测试目标
- Dockerfile 以
appuser(uid/gid 10001)运行应用,不再以 root。 - 三环境 compose 为 app/events 服务声明内存/CPU 限制。
- dev/main 数据库容器 init 挂载统一为
extensions_init.sql,表结构改由 app 侧 goose 迁移负责。
三、 测试方案与环境
- OS:Linux;Docker
docker build --check+docker compose config(静态校验,不启动容器)。 - 层级:工程工具改动 → 按验证契约适用 L1(构建/静态校验)+ L2(compose 渲染)。
- 用户目标:P5 批次推进;授权范围:代码与 compose 变更合入 dev,不含共享环境部署。
四、 预期结果
| 用例 | 预期 |
|---|---|
T1 docker build --check |
无 error/warning,USER appuser 前有 chown |
T2 docker compose config(dev/test/main) |
渲染出 mem_limit/mem_reservation/cpus;I4 后仅挂 01-extensions.sql |
| T3 grep 复核 | 无残留 context_init.sql / 00001_baseline.sql 挂载 |
五、 实际测试结果与判定
T1 Dockerfile 静态校验
- 输入:
docker build --check deploy/app - 实际输出:
[+] Building 0.4s (0/0) FINISHED,无警告输出 - 判定:PASS
T2 compose 渲染(三环境)
- 输入:
docker compose -f docker-compose.dev.yml config(test/main 同) - 实际输出(节选,dev):
app: mem_limit: 1500m mem_reservation: 1g cpus: 2.0 system-db: volumes: - ./deploy/postgres/extensions_init.sql:/docker-entrypoint-initdb.d/01-extensions.sql:ro - 判定:PASS(test/main 同样渲染出限制与统一 init 挂载)
T3 残留检查
- 输入:
rg -n 'context_init\.sql|00001_baseline\.sql' docker-compose.*.yml - 实际输出:无匹配
- 判定:PASS
六、 自动化测试套件汇总
| 检查 | 结果 |
|---|---|
docker build --check deploy/app |
PASS |
docker compose config -q(dev/test/main) |
3/3 PASS |
gofmt -l deploy(若 Go 代码涉及) |
NOT REQUIRED(本批无 Go 代码变更) |
go test ./...(涉及 Go 变更时) |
NOT REQUIRED(同上) |
七、 测试结论与后续优化建议
- 结论:P5 代码层达成;
integration_state: pending→ 本报告入库后执行agentctl validate+integrate。 - 部署窗口待办:I1 卷权限冒烟(新卷/已有卷对 uid 10001 可写)、
/health+ 一次写 data。 - 后续建议:I6 systemd 备份单元、cap_drop ALL 评估。