一键部署
仓库当前提供基于 Docker Compose 的完整启动脚本,入口脚本位于 build\run_freekit_pro_modules.bat 和 build/run_freekit_pro_modules.bash。
组件清单
| 服务 | 镜像 | 默认端口 | 说明 |
|---|---|---|---|
| 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 | 全文搜索引擎 |
host | 本地构建 | 18080 | FreeKit.Host 主 API 宿主 |
job | 本地构建 | 18081 | FreeKit.Job.Host |
message | 本地构建 | 18082 | FreeKit.MessageHandler.Host |
步骤 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。脚本会优先读取 .env.local,若不存在才回退到 .env。
重点修改这些值:
MYSQL_ROOT_PASSWORD=<change-me>
REDIS_PASSWORD=<change-me>
RABBITMQ_PASSWORD=<change-me>
MEILI_MASTER_KEY=<change-me>
RABBITMQ_USER=rabbitmq
RABBITMQ_VHOST=freekit_api_prod
端口(如有冲突可调整):
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
脚本内部执行的命令等价于:
cd build/compose/freekit_pro_modules
docker compose --env-file .env.local up -d --build
步骤 3 — 验证服务
| 工具 | 地址 |
|---|---|
| 主 API Swagger | http://localhost:18080/kit_api/swagger |
| 主 API RapiDoc | http://localhost:18080/kit_api/r |
| 主 API 健康检查 | http://localhost:18080/kit_api/health |
| Job Swagger | http://localhost:18081/job_api/swagger |
| Job FreeScheduler UI | http://localhost:18081/job_api/job |
| Message Swagger | http://localhost:18082/message_api/swagger |
| RabbitMQ 管理台 | http://localhost:15673 |
| MeiliSearch | http://localhost:17700 |
说明:
- Compose 当前不包含
FreeKit.HealthChecks独立服务。 - 如果需要独立健康检查 UI,请单独运行
src\Services\Host\FreeKit.HealthChecks\FreeKit.HealthChecks。
步骤 4 — 停止服务
cd build/compose/freekit_pro_modules
docker compose down
# 同时删除数据卷(慎用)
docker compose down -v
本地开发模式(非 Docker)
如果只想启动基础设施:
cd build/compose/freekit_pro_modules
docker compose --env-file .env.local up -d mysql redis rabbitmq meilisearch
然后在仓库根目录分别运行宿主:
dotnet run --project src\Services\Host\FreeKit.Host --launch-profile https-dev
dotnet run --project src\Services\Host\FreeKit.Job.Host --launch-profile https-dev
dotnet run --project src\Services\Host\FreeKit.MessageHandler.Host --launch-profile https-dev
FreeSql CodeFirst 自动建表
首次启动时,各模块在 IModuleStartup.Configure(...) 中自动同步表结构。典型例子:
// CmsKitModuleStartup.cs
public async void Configure(WebApplication app, IWebHostEnvironment env)
{
IFreeSql free = app.Services.GetRequiredService<IFreeSql>();
free.CodeFirst.SyncStructure(
typeof(Article),
typeof(Comment),
typeof(Notification),
typeof(ShortMsg)
);
}
此外,主宿主还会在启动后执行:
app.MapModules().Init();
await app.MigrationStartAsync();
所以容器首次启动时间会略长一些,属于正常现象。
生产环境注意事项
生产环境建议显式收敛自动建表行为,并将 .env.local 中的密码、主密钥、连接字符串替换为真实安全值,不要直接使用仓库模板。