# 通过 ecosystem.config.json 配置不同服务的示例 ## 📋 基本原理 你可以完全通过修改 `ecosystem.config.json` 文件来配置不同数量和不同配置的服务,无需 `.env` 文件。 ## 🎯 配置策略 ### 1. 增加或减少服务数量 在 `apps` 数组中添加或删除服务配置: ```json { "apps": [ // 保留需要的服务,删除不需要的 { "name": "jimeng-api-3302", // ... 配置 }, { "name": "jimeng-api-3303", // ... 配置 } // 删除 jimeng-api-3304 或添加更多服务 ] } ``` ### 2. 不同环境配置 每个服务都有 `env` (开发环境) 和 `env_production` (生产环境) 两套配置: ```json { "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. 个性化服务配置 你可以为每个服务设置不同的配置: ```json { "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 } } ] } ``` ## 🚀 启动命令 ### 启动所有服务 ```bash pm2 start ecosystem.config.json --env production ``` ### 启动单个服务 ```bash pm2 start ecosystem.config.json --only jimeng-api-3302 --env production ``` ### 启动多个指定服务 ```bash pm2 start ecosystem.config.json --only "jimeng-api-3302,jimeng-api-3303" --env production ``` ## 💡 实际配置示例 ### 示例1: 2个服务,不同TOS配置 ```json { "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: 单个服务 ```json { "apps": [ { "name": "jimeng-api-main", "env_production": { "SERVICE_ID": "jimeng-main", "PORT": 3302, "TOS_BUCKET_NAME": "main-bucket" } } ] } ``` ### 示例3: 5个服务,负载分散 ```json { "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` | ## 🔄 动态管理 ### 修改配置后重新加载 ```bash pm2 reload ecosystem.config.json --env production ``` ### 只重启特定服务 ```bash pm2 restart jimeng-api-3302 ``` ### 删除服务后清理 ```bash pm2 delete jimeng-api-3304 ``` ## ✅ 优势 1. **集中管理** - 所有配置在一个文件中 2. **版本控制** - 可以提交到Git中 3. **环境隔离** - dev和production环境分离 4. **灵活扩展** - 随时增减服务数量 5. **配置差异** - 每个服务可以有不同配置