feat(dev): containerize local dependencies
Some checks failed
ci / release-gate (push) Has been cancelled
Some checks failed
ci / release-gate (push) Has been cancelled
This commit is contained in:
@@ -6,14 +6,14 @@
|
||||
|
||||
- .NET 10 SDK
|
||||
- Node.js 24+、npm 11+
|
||||
- PostgreSQL
|
||||
- Redis(Development 可不配置;涉及分布式缓存、频控或完整验收时应启动)
|
||||
- Docker Desktop(通过 Docker Compose 提供 PostgreSQL 18、Redis 7 和 MinIO)
|
||||
|
||||
```bash
|
||||
dotnet --version
|
||||
node --version
|
||||
npm --version
|
||||
pg_isready -h 127.0.0.1 -p 5432
|
||||
docker info
|
||||
docker compose version
|
||||
```
|
||||
|
||||
首次拉取代码后恢复依赖:
|
||||
@@ -23,27 +23,54 @@ dotnet restore TIKU-BACKEND.slnx
|
||||
npm --prefix Tiku.PlatformAdmin.Web install
|
||||
```
|
||||
|
||||
## 配置数据库
|
||||
## 启动 PostgreSQL、Redis 与对象存储
|
||||
|
||||
Development 未配置连接串时,默认使用当前系统用户连接本机 `tiku` 数据库:
|
||||
在仓库根目录启动依赖并等待健康检查通过:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
默认只监听本机回环地址:
|
||||
|
||||
```text
|
||||
Host=localhost;Database=tiku;Username=<当前系统用户>
|
||||
PostgreSQL: 127.0.0.1:5432,数据库 tiku,用户 tiku,密码 tiku_dev
|
||||
Redis: 127.0.0.1:6379
|
||||
MinIO API: 127.0.0.1:9000,Access Key tiku,Secret Key tiku_minio_dev
|
||||
MinIO 控制台: http://127.0.0.1:9001
|
||||
```
|
||||
|
||||
首次使用可创建数据库:
|
||||
为 DbMigrator、API 和 Worker 设置相同的连接串:
|
||||
|
||||
```bash
|
||||
createdb -h 127.0.0.1 -U <数据库用户> tiku
|
||||
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` 配置:
|
||||
|
||||
```bash
|
||||
export ConnectionStrings__Database='Host=127.0.0.1;Port=5432;Database=tiku;Username=<数据库用户>;Password=<本地密码>'
|
||||
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
|
||||
```
|
||||
|
||||
不要把连接串、密码、Token 或私钥写入仓库。
|
||||
PostgreSQL 初始化变量不会修改已有数据卷中的账号或数据库。不要把自定义连接串、密码、Token 或私钥写入仓库。
|
||||
|
||||
日常暂停使用 `docker compose stop`,恢复使用 `docker compose start`。`docker compose down` 会删除容器和网络但保留命名数据卷;`docker compose down -v` 会永久删除本地 PostgreSQL、Redis 与 MinIO 数据,只能在明确不需要数据时使用。
|
||||
|
||||
## 迁移与初始化
|
||||
|
||||
@@ -90,14 +117,10 @@ ASPNETCORE_ENVIRONMENT=Development dotnet run --project Tiku.Api --launch-profil
|
||||
后台循环不在 API 内运行。需要处理域名、订阅、任务队列、授权缓存失效或商业账务时,另开终端启动 Worker:
|
||||
|
||||
```bash
|
||||
ASPNETCORE_ENVIRONMENT=Development dotnet run --project Tiku.Worker
|
||||
DOTNET_ENVIRONMENT=Development dotnet run --project Tiku.Worker
|
||||
```
|
||||
|
||||
如需 Redis,API 与 Worker 应使用同一实例:
|
||||
|
||||
```bash
|
||||
export ConnectionStrings__Redis='localhost:6379,abortConnect=false'
|
||||
```
|
||||
API 与 Worker 必须使用前面设置的同一 PostgreSQL、Redis 和对象存储。Worker 是通用 Host,环境名使用 `DOTNET_ENVIRONMENT`;每个新终端都需要重新设置连接串,或通过本机未跟踪的安全配置注入。
|
||||
|
||||
## 验证修改
|
||||
|
||||
@@ -119,7 +142,7 @@ PostgreSQL 特有的 Migration、事务、约束和租户隔离行为必须由
|
||||
|
||||
### API 报数据库不可用
|
||||
|
||||
确认 PostgreSQL 已启动、数据库存在,并核对 `ConnectionStrings__Database` 或 `DATABASE_URL`。非 Development 环境没有本地默认连接串。
|
||||
先运行 `docker compose ps`,确认 PostgreSQL 为 `healthy`,再核对 `ConnectionStrings__Database` 或 `DATABASE_URL`。如果 `5432` 端口已被本机 PostgreSQL 占用,应停止该服务或通过 `TIKU_POSTGRES_PORT` 改用其他宿主机端口;非 Development 环境没有本地默认连接串。
|
||||
|
||||
### 找不到平台管理员临时密码
|
||||
|
||||
@@ -129,6 +152,10 @@ PostgreSQL 特有的 Migration、事务、约束和租户隔离行为必须由
|
||||
|
||||
`/api/system/health/ready` 会检查 PostgreSQL 和已配置的 Redis。先验证数据库连接;配置 Redis 后还需确认 Redis 可访问。匿名响应不会暴露依赖详情。
|
||||
|
||||
### 上传或导出提示对象存储不可用
|
||||
|
||||
运行 `docker compose ps` 并确认 MinIO 为 `healthy`,再检查 `http://127.0.0.1:9000/minio/health/live`。自定义 MinIO 凭据或端口后,必须同步设置 `Storage:S3Compatible` 或 `S3_ENDPOINT`、`S3_ACCESS_KEY`、`S3_SECRET_KEY` 与 `S3_SECURE`。
|
||||
|
||||
### API 启动了但后台任务不执行
|
||||
|
||||
Production 和常规 Development 都需要独立运行 `Tiku.Worker`。Development 仅额外在 API 中注册本地域名生命周期旁路,不代表 API 承载全部 Worker 循环。
|
||||
|
||||
Reference in New Issue
Block a user