const fs = require('fs'); const os = require('os'); const path = require('path'); const {env} = require('process'); const request = require('sync-request'); console.log('服务端环境变量 ', env.SERVER_ID, env.SERVER_TYPE); if (env.SERVER_ID) { let type = env.SERVER_TYPE || 'game'; let url = `http://server-tool:7456/server/getConfig?sid=${env.SERVER_ID}&type=${type}` console.log('拉取服务端启动配置文件', url); let res = request('GET', url, { headers: { 'content-type': 'application/json' } }); const body = JSON.parse(res.body.toString()); if (body) { fs.writeFileSync('config.json', JSON.stringify(body, null, 2)); console.log('服务端配置: ', body); } else { console.log('拉取失败'); } } //读取服务配置 const config = fs.existsSync(path.resolve(__dirname, 'config.json')) ? JSON.parse(fs.readFileSync(path.resolve(__dirname, 'config.json'), 'utf-8')) : {}; const dis = config.serverId != undefined ? config.serverId : '0'; const localApps = [ { // 应用程序名称 name: 'heijiao_msg_s' + dis, // 执行文件 script: 'index.js', // 应用程序所在的目录 cwd: './', //集群实例数量,0表示根据cpu核心数自动控制 instances: 8, // 传递给脚本的参数 args: '-serverType msg', // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。 watch: false, // 不用监听的文件 ignore_watch: [ 'logs' ], // 自定义应用程序的错误日志文件(错误日志文件) error_file: './logs/errMsg.log', // 自定义应用程序日志文件(正常日志文件) out_file: './logs/outMsg.log', // 指定日志文件的时间格式 log_date_format: 'YYYY-MM-DD HH:mm:ss', } ]; const crossApps = [ { // 应用程序名称 name: 'heijiao_cross_s' + dis, // 执行文件 script: 'index.js', // 应用程序所在的目录 cwd: './', // 传递给脚本的参数 args: '-serverType cross', // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。 watch: false, // 不用监听的文件 ignore_watch: [ 'logs' ], // 自定义应用程序的错误日志文件(错误日志文件) error_file: './logs/errCross.log', // 自定义应用程序日志文件(正常日志文件) out_file: './logs/outCross.log', // 指定日志文件的时间格式 log_date_format: 'YYYY-MM-DD HH:mm:ss', } ] module.exports = { apps: config.type == 'cross' ? crossApps : localApps }