151 lines
3.9 KiB
JavaScript
151 lines
3.9 KiB
JavaScript
// ecosystem.config.js
|
|
const path = require('path');
|
|
const dotenv = require('dotenv');
|
|
|
|
// Load environment variables safely with error handling
|
|
const loadEnvFile = (envPath) => {
|
|
try {
|
|
console.log('Loading env from:', envPath);
|
|
const result = dotenv.config({ path: envPath });
|
|
if (result.error) {
|
|
console.warn(`Warning: .env file not found or invalid at ${envPath}:`, result.error.message);
|
|
return {};
|
|
}
|
|
console.log('Env variables loaded from', envPath, ':', Object.keys(result.parsed || {}));
|
|
return result.parsed || {};
|
|
} catch (error) {
|
|
console.warn(`Warning: Error loading .env file at ${envPath}:`, error.message);
|
|
return {};
|
|
}
|
|
};
|
|
|
|
// Load environment variables for each server
|
|
const authEnv = loadEnvFile(path.resolve(__dirname, 'auth-server/.env'));
|
|
const aircallEnv = loadEnvFile(path.resolve(__dirname, 'aircall-server/.env'));
|
|
const klaviyoEnv = loadEnvFile(path.resolve(__dirname, 'klaviyo-server/.env'));
|
|
const metaEnv = loadEnvFile(path.resolve(__dirname, 'meta-server/.env'));
|
|
|
|
// Common log settings for all apps
|
|
const logSettings = {
|
|
log_rotate: true,
|
|
max_size: '10M',
|
|
retain: '10',
|
|
log_date_format: 'YYYY-MM-DD HH:mm:ss'
|
|
};
|
|
|
|
// Common app settings
|
|
const commonSettings = {
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '1G',
|
|
time: true,
|
|
...logSettings,
|
|
ignore_watch: [
|
|
'node_modules',
|
|
'logs',
|
|
'.git',
|
|
'*.log'
|
|
],
|
|
min_uptime: 5000,
|
|
max_restarts: 5,
|
|
restart_delay: 4000,
|
|
listen_timeout: 50000,
|
|
kill_timeout: 5000,
|
|
node_args: '--max-old-space-size=1536'
|
|
};
|
|
|
|
module.exports = {
|
|
apps: [
|
|
{
|
|
...commonSettings,
|
|
name: 'auth-server',
|
|
script: './auth-server/index.js',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3003,
|
|
...authEnv
|
|
},
|
|
error_file: 'auth-server/logs/pm2/err.log',
|
|
out_file: 'auth-server/logs/pm2/out.log',
|
|
log_file: 'auth-server/logs/pm2/combined.log',
|
|
env_production: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3003
|
|
},
|
|
env_development: {
|
|
NODE_ENV: 'development',
|
|
PORT: 3003
|
|
}
|
|
},
|
|
{
|
|
...commonSettings,
|
|
name: 'aircall-server',
|
|
script: './aircall-server/server.js',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
AIRCALL_PORT: 3002,
|
|
...aircallEnv
|
|
},
|
|
error_file: 'aircall-server/logs/pm2/err.log',
|
|
out_file: 'aircall-server/logs/pm2/out.log',
|
|
log_file: 'aircall-server/logs/pm2/combined.log',
|
|
env_production: {
|
|
NODE_ENV: 'production',
|
|
AIRCALL_PORT: 3002
|
|
}
|
|
},
|
|
{
|
|
...commonSettings,
|
|
name: 'klaviyo-server',
|
|
script: './klaviyo-server/server.js',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
KLAVIYO_PORT: 3004,
|
|
...klaviyoEnv
|
|
},
|
|
error_file: 'klaviyo-server/logs/pm2/err.log',
|
|
out_file: 'klaviyo-server/logs/pm2/out.log',
|
|
log_file: 'klaviyo-server/logs/pm2/combined.log',
|
|
env_production: {
|
|
NODE_ENV: 'production',
|
|
KLAVIYO_PORT: 3004
|
|
}
|
|
},
|
|
{
|
|
...commonSettings,
|
|
name: 'meta-server',
|
|
script: './meta-server/server.js',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3005,
|
|
...metaEnv
|
|
},
|
|
error_file: 'meta-server/logs/pm2/err.log',
|
|
out_file: 'meta-server/logs/pm2/out.log',
|
|
log_file: 'meta-server/logs/pm2/combined.log',
|
|
env_production: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3005
|
|
}
|
|
},
|
|
{
|
|
name: "gorgias-server",
|
|
script: "./gorgias-server/server.js",
|
|
env: {
|
|
NODE_ENV: "development",
|
|
PORT: 3006
|
|
},
|
|
env_production: {
|
|
NODE_ENV: "production",
|
|
PORT: 3006
|
|
},
|
|
error_file: "./logs/gorgias-server-error.log",
|
|
out_file: "./logs/gorgias-server-out.log",
|
|
log_file: "./logs/gorgias-server-combined.log",
|
|
time: true
|
|
}
|
|
]
|
|
};
|