|
|
# 测试与部署方案
|
|
|
|
|
|
本轮开发验证不依赖 Docker,不依赖真实数据库。
|
|
|
真实 MySQL/PostgreSQL 和 Docker Compose 属于集成验证阶段。
|
|
|
|
|
|
## 本地轻量验证
|
|
|
|
|
|
```bash
|
|
|
cd <workspace>/iTi-Flask
|
|
|
uv run pytest -q
|
|
|
|
|
|
cd <workspace>/iTi-System
|
|
|
uv run pytest -q
|
|
|
|
|
|
cd <workspace>/my-business-app
|
|
|
uv run pytest -q
|
|
|
```
|
|
|
|
|
|
这些测试允许使用 SQLite 内存库,只验证框架行为、路由契约和模块组装。
|
|
|
|
|
|
## MySQL 集成验证
|
|
|
|
|
|
准备独立测试库:
|
|
|
|
|
|
```sql
|
|
|
CREATE DATABASE iti_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
CREATE DATABASE my_business_app_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
```
|
|
|
|
|
|
执行:
|
|
|
|
|
|
```bash
|
|
|
export DATABASE_URL='mysql+pymysql://root:password@127.0.0.1:3306/iti_test?charset=utf8mb4'
|
|
|
uv run python -m alembic upgrade head
|
|
|
uv run iti-system migrations sync --target migrations/versions
|
|
|
PYTHONPATH=. uv run iti-system seed system app:create_app
|
|
|
uv run uvicorn main:app --reload
|
|
|
```
|
|
|
|
|
|
## PostgreSQL 集成验证
|
|
|
|
|
|
准备独立测试库:
|
|
|
|
|
|
```sql
|
|
|
CREATE DATABASE iti_test;
|
|
|
CREATE DATABASE my_business_app_test;
|
|
|
```
|
|
|
|
|
|
执行:
|
|
|
|
|
|
```bash
|
|
|
export DATABASE_URL='postgresql+psycopg://postgres:password@127.0.0.1:5432/iti_test'
|
|
|
uv run python -m alembic upgrade head
|
|
|
uv run uvicorn main:app --reload
|
|
|
```
|
|
|
|
|
|
验证:
|
|
|
|
|
|
```bash
|
|
|
curl http://127.0.0.1:8000/health
|
|
|
curl http://127.0.0.1:8000/ready
|
|
|
```
|
|
|
|
|
|
如启用 `ready_check_db=True`,`/ready` 会执行 `SELECT 1`。
|
|
|
|
|
|
## Docker Compose 健康检查
|
|
|
|
|
|
模板生成项目已经包含 Docker Compose:
|
|
|
|
|
|
```bash
|
|
|
cp .env.example .env
|
|
|
iticli docker up
|
|
|
iticli docker logs
|
|
|
iticli docker down
|
|
|
```
|
|
|
|
|
|
如需本地数据库:
|
|
|
|
|
|
```bash
|
|
|
iticli docker up --db
|
|
|
iticli docker down --db
|
|
|
```
|
|
|
|
|
|
服务容器使用:
|
|
|
|
|
|
```yaml
|
|
|
healthcheck:
|
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"]
|
|
|
interval: 10s
|
|
|
timeout: 3s
|
|
|
retries: 3
|
|
|
```
|
|
|
|
|
|
依赖数据库就绪的服务可检查 `/ready`。
|
|
|
|
|
|
## 生产运行
|
|
|
|
|
|
简单部署:
|
|
|
|
|
|
```bash
|
|
|
uv run uvicorn main:app --host 0.0.0.0 --port 8000
|
|
|
```
|
|
|
|
|
|
多 worker:
|
|
|
|
|
|
```bash
|
|
|
uv run gunicorn main:app -k uvicorn.workers.UvicornWorker -w 4 -b 0.0.0.0:8000
|
|
|
```
|
|
|
|
|
|
`tasks_enabled=True` 时不要在多个 worker 同时启用调度。
|
|
|
轻量任务只保证单进程内正常运行。
|