跳到主要内容

一键部署

仓库当前提供基于 Docker Compose 的完整启动脚本,入口脚本位于 build\run_freekit_pro_modules.batbuild/run_freekit_pro_modules.bash

组件清单

服务镜像默认端口说明
MySQLmysql:8.413306主数据库
Redisredis:7.4-alpine16379缓存 / FreeScheduler 存储
RabbitMQrabbitmq:3.13-management5672 / 15673消息队列
MeiliSearchgetmeili/meilisearch:v1.1317700全文搜索引擎
host本地构建18080FreeKit.Host 主 API 宿主
job本地构建18081FreeKit.Job.Host
message本地构建18082FreeKit.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 Swaggerhttp://localhost:18080/kit_api/swagger
主 API RapiDochttp://localhost:18080/kit_api/r
主 API 健康检查http://localhost:18080/kit_api/health
Job Swaggerhttp://localhost:18081/job_api/swagger
Job FreeScheduler UIhttp://localhost:18081/job_api/job
Message Swaggerhttp://localhost:18082/message_api/swagger
RabbitMQ 管理台http://localhost:15673
MeiliSearchhttp://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 中的密码、主密钥、连接字符串替换为真实安全值,不要直接使用仓库模板。