Files
tiku-backend.net/docs/quickstart.md
xiong a517ffc6a7
Some checks failed
ci / release-gate (push) Has been cancelled
feat(dev): containerize local dependencies
2026-08-04 13:27:25 +08:00

6.8 KiB
Raw Blame History

本地开发快速上手

本页用于日常开发:初始化依赖、迁移数据库、启动 API/Worker/平台前端并完成基础验证。若要从空数据库验收“创建租户 → Owner 激活 → 发布站点”的完整流程,请改看空数据库到租户建站验收

前置依赖

  • .NET 10 SDK
  • Node.js 24+、npm 11+
  • Docker Desktop通过 Docker Compose 提供 PostgreSQL 18、Redis 7 和 MinIO
dotnet --version
node --version
npm --version
docker info
docker compose version

首次拉取代码后恢复依赖:

dotnet restore TIKU-BACKEND.slnx
npm --prefix Tiku.PlatformAdmin.Web install

启动 PostgreSQL、Redis 与对象存储

在仓库根目录启动依赖并等待健康检查通过:

docker compose up -d --wait
docker compose ps
docker compose exec postgres pg_isready -U tiku -d tiku
docker compose exec redis redis-cli ping
curl --fail http://127.0.0.1:9000/minio/health/live

默认只监听本机回环地址:

PostgreSQL: 127.0.0.1:5432数据库 tiku用户 tiku密码 tiku_dev
Redis:      127.0.0.1:6379
MinIO API:  127.0.0.1:9000Access Key tikuSecret Key tiku_minio_dev
MinIO 控制台: http://127.0.0.1:9001

为 DbMigrator、API 和 Worker 设置相同的连接串:

export ConnectionStrings__Database='Host=127.0.0.1;Port=5432;Database=tiku;Username=tiku;Password=tiku_dev'
export ConnectionStrings__Redis='127.0.0.1:6379,abortConnect=false'

Development 配置会把 local_dev 对象存储指向该 MinIO没有完整阿里云 OSS 凭据时也会自动回退到 local_dev。文件内容保存在 MinIO 数据卷PostgreSQL 只保存业务元数据和对象引用。

这些默认凭据仅用于本机开发不能用于共享或生产环境。需要自定义数据库、MinIO 凭据或宿主机端口时,应在首次创建数据卷前设置 Compose 变量,并同步修改应用连接串或 Storage:S3Compatible 配置:

export TIKU_POSTGRES_DB='<数据库名>'
export TIKU_POSTGRES_USER='<数据库用户>'
export TIKU_POSTGRES_PASSWORD='<本地密码>'
export TIKU_POSTGRES_PORT='<宿主机端口>'
export TIKU_REDIS_PORT='<宿主机端口>'
export TIKU_MINIO_ROOT_USER='<Access Key>'
export TIKU_MINIO_ROOT_PASSWORD='<Secret Key>'
export TIKU_MINIO_API_PORT='<宿主机 API 端口>'
export TIKU_MINIO_CONSOLE_PORT='<宿主机控制台端口>'
docker compose up -d --wait

PostgreSQL 初始化变量不会修改已有数据卷中的账号或数据库。不要把自定义连接串、密码、Token 或私钥写入仓库。

日常暂停使用 docker compose stop,恢复使用 docker compose startdocker compose down 会删除容器和网络但保留命名数据卷;docker compose down -v 会永久删除本地 PostgreSQL、Redis 与 MinIO 数据,只能在明确不需要数据时使用。

迁移与初始化

API 不执行 Migration。数据库结构、内置权限/菜单目录和 starter 套餐统一由 Tiku.DbMigrator 初始化:

ASPNETCORE_ENVIRONMENT=Development dotnet run --project Tiku.DbMigrator

默认 Development seed 会在尚无平台角色绑定时创建 admin@tiku.local、演示租户和演示运营数据;随机临时密码只在首次创建时输出,首次登录必须改密。

若需要不含演示数据的空库,使用显式 Bootstrap 流程,不要运行默认 Development seed

export ASPNETCORE_ENVIRONMENT=Development
export TIKU_BOOTSTRAP_PLATFORM_ADMIN_EMAIL='<平台管理员邮箱>'
export TIKU_BOOTSTRAP_PLATFORM_ADMIN_PASSWORD='<临时密码>'
export TIKU_BOOTSTRAP_PLATFORM_ADMIN_NAME='<显示名称>'

dotnet run --project Tiku.DbMigrator -- \
  --skip-development-seed \
  --bootstrap-platform-admin

完整空库验收步骤见空数据库到租户建站验收

启动运行时

启动 API

ASPNETCORE_ENVIRONMENT=Development dotnet run --project Tiku.Api --launch-profile http

Tiku.Api.csproj 的 SPA Proxy 会在 Development 启动 Tiku.PlatformAdmin.Web 的 Vite 服务。默认入口:

后台循环不在 API 内运行。需要处理域名、订阅、任务队列、授权缓存失效或商业账务时,另开终端启动 Worker

DOTNET_ENVIRONMENT=Development dotnet run --project Tiku.Worker

API 与 Worker 必须使用前面设置的同一 PostgreSQL、Redis 和对象存储。Worker 是通用 Host环境名使用 DOTNET_ENVIRONMENT;每个新终端都需要重新设置连接串,或通过本机未跟踪的安全配置注入。

验证修改

dotnet build TIKU-BACKEND.slnx --no-restore
dotnet test TIKU-BACKEND.slnx --no-build
dotnet format TIKU-BACKEND.slnx --verify-no-changes --no-restore
npm --prefix Tiku.PlatformAdmin.Web run check
dotnet ef migrations has-pending-model-changes \
  --project Tiku.Infrastructure \
  --startup-project Tiku.DbMigrator \
  --no-build
git diff --check

PostgreSQL 特有的 Migration、事务、约束和租户隔离行为必须由真实 PostgreSQL 集成测试验证EF InMemory 不能替代。接口、DTO 和错误响应以当前运行时 OpenAPI/Scalar 为准。

常见问题

API 报数据库不可用

先运行 docker compose ps,确认 PostgreSQL 为 healthy,再核对 ConnectionStrings__DatabaseDATABASE_URL。如果 5432 端口已被本机 PostgreSQL 占用,应停止该服务或通过 TIKU_POSTGRES_PORT 改用其他宿主机端口;非 Development 环境没有本地默认连接串。

找不到平台管理员临时密码

默认 Development seed 和显式 Bootstrap 都只在创建账号时输出一次临时密码,后续运行不会重放。不要从日志或数据库恢复明文;应通过受控流程重置,或在确认无需保留本地数据后重建开发数据库。

Readiness 返回 503

/api/system/health/ready 会检查 PostgreSQL 和已配置的 Redis。先验证数据库连接配置 Redis 后还需确认 Redis 可访问。匿名响应不会暴露依赖详情。

上传或导出提示对象存储不可用

运行 docker compose ps 并确认 MinIO 为 healthy,再检查 http://127.0.0.1:9000/minio/health/live。自定义 MinIO 凭据或端口后,必须同步设置 Storage:S3CompatibleS3_ENDPOINTS3_ACCESS_KEYS3_SECRET_KEYS3_SECURE

API 启动了但后台任务不执行

Production 和常规 Development 都需要独立运行 Tiku.Worker。Development 仅额外在 API 中注册本地域名生命周期旁路,不代表 API 承载全部 Worker 循环。