# Docker Policy — AI Contract ## Docker SHOULD be used for | ✓ | Examples | |---|---| | 依赖数据服务 | PostgreSQL | | 缓存 | Redis(需要时) | | 消息队列 | 需要时再加 | | 对象存储 | MinIO / S3 兼容(需要时) | | 第三方依赖模拟 | mailhog 等(需要时) | | 生产/CI 应用交付 | 不可变 api / web 镜像 | ## Docker SHOULD NOT be used for | ✗ | Why | |---|---| | Go API 日常开发 | 拖慢反馈;用本机 `go run` / `air` | | Vue H5 日常开发 | 拖慢 HMR;用本机 Vite | | Hot reload 工作流 | 禁止「改代码 → docker build → run」 | | 把本机当成迷你 K8s | 违反 constitution:本地反馈速度优先 | 见 [development.md](development.md) · [environment.md](environment.md)。 --- ## Local compose(deps only) | File | Role | |---|---| | `docker-compose.dev.yml`(仓库根) | **默认本地**:仅依赖服务 | | `deploy/docker-compose.yml` | 与 dev 对齐的依赖入口(兼容旧命令);生产见 prod 文件 | ```bash docker compose -f docker-compose.dev.yml up -d ``` **允许的服务(local):** `postgres`(+ 需要时 `redis` / `minio`) **禁止默认加入(local):** `api` · `user-h5` · `worker` · `nginx` --- ## Production / CI images | Artifact | Location (target) | |---|---| | Backend Dockerfile | `deploy/Dockerfile.api`(按需新增) | | H5/Nginx Dockerfile | `deploy/Dockerfile.user-h5`(按需新增) | | Prod compose / K8s | `deploy/docker-compose.prod.yml` 等 | 生产镜像规则见 [deployment.md](deployment.md):禁止 `latest`;语义化版本或 git SHA。 --- ## AI MUST NOT - 把「本地开发」文档写成只能 `docker compose up` 全栈。 - 在业务 PR 里强制同事每次改代码都 build 应用镜像。 - 将 `.env` 秘密 `COPY` 进镜像。 - 混用 `docker-compose.dev.yml` 与 prod 环境变量文件。 --- ## When full-stack compose is OK 仅当任务明确是: - 验证 prod compose / 镜像入口 - CI integration job - 演示「一键依赖+应用」给非开发角色(仍非日常编码默认)