4.2 KiB
4.2 KiB
通过 ecosystem.config.json 配置不同服务的示例
📋 基本原理
你可以完全通过修改 ecosystem.config.json 文件来配置不同数量和不同配置的服务,无需 .env 文件。
🎯 配置策略
1. 增加或减少服务数量
在 apps 数组中添加或删除服务配置:
{
"apps": [
// 保留需要的服务,删除不需要的
{
"name": "jimeng-api-3302",
// ... 配置
},
{
"name": "jimeng-api-3303",
// ... 配置
}
// 删除 jimeng-api-3304 或添加更多服务
]
}
2. 不同环境配置
每个服务都有 env (开发环境) 和 env_production (生产环境) 两套配置:
{
"env": {
"MONGODB_URL": "mongodb://localhost:27017/jimeng-api",
"TOS_BUCKET_NAME": "dev-bucket"
},
"env_production": {
"MONGODB_URL": "mongodb://prod-server:27017/jimeng-api",
"TOS_BUCKET_NAME": "prod-bucket"
}
}
3. 个性化服务配置
你可以为每个服务设置不同的配置:
{
"apps": [
{
"name": "jimeng-api-internal",
"env_production": {
"SERVICE_ID": "jimeng-internal",
"PORT": 3302,
"TOS_BUCKET_NAME": "internal-bucket",
"HEARTBEAT_INTERVAL": 30
}
},
{
"name": "jimeng-api-external",
"env_production": {
"SERVICE_ID": "jimeng-external",
"PORT": 3303,
"TOS_BUCKET_NAME": "external-bucket",
"HEARTBEAT_INTERVAL": 60
}
}
]
}
🚀 启动命令
启动所有服务
pm2 start ecosystem.config.json --env production
启动单个服务
pm2 start ecosystem.config.json --only jimeng-api-3302 --env production
启动多个指定服务
pm2 start ecosystem.config.json --only "jimeng-api-3302,jimeng-api-3303" --env production
💡 实际配置示例
示例1: 2个服务,不同TOS配置
{
"apps": [
{
"name": "jimeng-api-images",
"env_production": {
"SERVICE_ID": "jimeng-images",
"PORT": 3302,
"TOS_BUCKET_NAME": "images-bucket",
"HEARTBEAT_INTERVAL": 30
}
},
{
"name": "jimeng-api-videos",
"env_production": {
"SERVICE_ID": "jimeng-videos",
"PORT": 3303,
"TOS_BUCKET_NAME": "videos-bucket",
"HEARTBEAT_INTERVAL": 60
}
}
]
}
示例2: 单个服务
{
"apps": [
{
"name": "jimeng-api-main",
"env_production": {
"SERVICE_ID": "jimeng-main",
"PORT": 3302,
"TOS_BUCKET_NAME": "main-bucket"
}
}
]
}
示例3: 5个服务,负载分散
{
"apps": [
{
"name": "jimeng-api-3302",
"env_production": { "PORT": 3302, "SERVICE_ID": "jimeng-3302" }
},
{
"name": "jimeng-api-3303",
"env_production": { "PORT": 3303, "SERVICE_ID": "jimeng-3303" }
},
{
"name": "jimeng-api-3304",
"env_production": { "PORT": 3304, "SERVICE_ID": "jimeng-3304" }
},
{
"name": "jimeng-api-3305",
"env_production": { "PORT": 3305, "SERVICE_ID": "jimeng-3305" }
},
{
"name": "jimeng-api-3306",
"env_production": { "PORT": 3306, "SERVICE_ID": "jimeng-3306" }
}
]
}
⚙️ 关键配置项说明
| 配置项 | 作用 | 示例 |
|---|---|---|
name |
PM2进程名称 | "jimeng-api-3302" |
SERVICE_ID |
心跳服务中的唯一标识 | "jimeng-api-3302" |
PORT |
服务端口 | 3302 |
MONGODB_URL |
数据库连接 | "mongodb://localhost:27017/jimeng-api" |
TOS_BUCKET_NAME |
对象存储桶 | "your-bucket" |
HEARTBEAT_INTERVAL |
心跳间隔(秒) | 30 |
🔄 动态管理
修改配置后重新加载
pm2 reload ecosystem.config.json --env production
只重启特定服务
pm2 restart jimeng-api-3302
删除服务后清理
pm2 delete jimeng-api-3304
✅ 优势
- 集中管理 - 所有配置在一个文件中
- 版本控制 - 可以提交到Git中
- 环境隔离 - dev和production环境分离
- 灵活扩展 - 随时增减服务数量
- 配置差异 - 每个服务可以有不同配置