# 测试与部署方案 本轮开发验证不依赖 Docker,不依赖真实数据库。 真实 MySQL/PostgreSQL 和 Docker Compose 属于集成验证阶段。 ## 本地轻量验证 ```bash cd /iTi-Flask uv run pytest -q cd /iTi-System uv run pytest -q cd /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 同时启用调度。 轻量任务只保证单进程内正常运行。