一键部署
项目提供基于 Docker Compose 的完整部署方案,包含所有基础设施服务,一条命令启动。
组件清单
| 服务 | 镜像 | 默认端口 | 说明 |
|---|---|---|---|
| MySQL | mysql:8.4 | 13306 | 主数据库 |
| Redis | redis:7.4-alpine | 16379 | 缓存 / FreeScheduler 存储 |
| RabbitMQ | rabbitmq:3.13-management | 5672 / 15673 | 消息队列 |
| MeiliSearch | getmeili/meilisearch:v1.13 | 17700 | 全文搜索引擎 |
| FreeKit.Host | 本地构建 | 18080 | 主 API 服务 |
| FreeKit.Job.Host | 本地构建 | 18081 | FreeScheduler 任务宿主 |
| FreeKit.MessageHandler.Host | 本地构建 | 18082 | CAP 消息消费宿主 |
步骤 1 — 准备环境文件
从仓库根目录执行:
# Linux / macOS
cp build/compose/freekit_pro_modules/.env build/compose/freekit_pro_modules/.env.local
# Windows PowerShell
Copy-Item build/compose/freekit_pro_modules/.env `
build/compose/freekit_pro_modules/.env.local
然后编辑 .env.local,必须修改 以下密码:
# 数据库密码(所有 MYSQL_CONN_* 里的 Password= 也需同步修改)
MYSQL_ROOT_PASSWORD=ChangeThisMySqlRootPassword
# Redis 密码
REDIS_PASSWORD=ChangeThisRedisPassword
# MeiliSearch 主密钥
MEILI_MASTER_KEY=ChangeThisMeiliMasterKey
# RabbitMQ
RABBITMQ_USER=rabbitmq
RABBITMQ_PASSWORD=ChangeThisRabbitPassword
端口(如有冲突可调整):
MYSQL_PORT=13306
REDIS_PORT=16379
RABBITMQ_PORT=5672
RABBITMQ_MANAGEMENT_PORT=15673
MEILI_PORT=17700
HOST_API_PORT=18080
JOB_API_PORT=18081
MESSAGE_API_PORT=18082
步骤 2 — 一键启动
Windows
build\run_freekit_pro_modules.bat
Linux / macOS
bash build/run_freekit_pro_modules.bash
或直接使用 Docker Compose:
cd build/compose/freekit_pro_modules
docker compose --env-file .env.local up -d --build
说明:build/run_freekit_pro_modules.bat 与 build/run_freekit_pro_modules.bash
会优先读取 .env.local,若不存在则回退到 .env。
步骤 3 — 验证服务
| 工具 | 地址 |
|---|---|
| 主 API(RapiDoc) | http://localhost:18080/api-docs/index.html |
| 健康检查 UI | http://localhost:18080/healthchecks-ui |
| RabbitMQ 管理台 | http://localhost:15673 |
| MeiliSearch Dashboard | http://localhost:17700 |
步骤 4 — 停止服务
cd build/compose/freekit_pro_modules
docker compose down
# 同时删除数据卷(慎用)
docker compose down -v
本地开发模式(非 Docker)
如果只想启动基础设施,不构建应用镜像:
# 只启动 mysql / redis / rabbitmq / meilisearch
docker compose up -d mysql redis rabbitmq meilisearch
然后使用 dotnet watch 运行应用:
cd src/Services/Host/FreeKit.Host
dotnet watch --launch-profile https-dev
FreeSql CodeFirst 自动建表
首次启动时,各模块在 Configure(WebApplication app, ...) 中自动同步表结构:
// BasicIdentityModuleStartup.cs
public void Configure(WebApplication app, IWebHostEnvironment env)
{
IFreeSql fsql = app.Services.GetRequiredService<IFreeSql>();
fsql.CodeFirst.ConfigFreeKitIdentity();
fsql.CodeFirst.SyncStructure(typeof(User), typeof(UserToken));
}
无需任何 dotnet ef migration 命令,应用启动即建表。
生产环境注意事项
生产环境建议将 FreeSql.CodeFirst.IsAutoSyncStructure 设为 false,改为在升级流程中手动执行 SQL diff,避免意外 DDL 操作。