跳到主要内容

一键部署

项目提供基于 Docker Compose 的完整部署方案,包含所有基础设施服务,一条命令启动。

组件清单

服务镜像默认端口说明
MySQLmysql:8.413306主数据库
Redisredis:7.4-alpine16379缓存 / FreeScheduler 存储
RabbitMQrabbitmq:3.13-management5672 / 15673消息队列
MeiliSearchgetmeili/meilisearch:v1.1317700全文搜索引擎
FreeKit.Host本地构建18080主 API 服务
FreeKit.Job.Host本地构建18081FreeScheduler 任务宿主
FreeKit.MessageHandler.Host本地构建18082CAP 消息消费宿主

步骤 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.batbuild/run_freekit_pro_modules.bash 会优先读取 .env.local,若不存在则回退到 .env

步骤 3 — 验证服务

工具地址
主 API(RapiDoc)http://localhost:18080/api-docs/index.html
健康检查 UIhttp://localhost:18080/healthchecks-ui
RabbitMQ 管理台http://localhost:15673
MeiliSearch Dashboardhttp://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 操作。