module.exports = { apps: [ // 🟢 --- PRIMEIRA APLICAÇÃO: API PRINCIPAL (servidor HTTP) --- { name: "contratacao-sothis-api", // Nome que aparecerá no PM2 script: "src/app.js", // Caminho do arquivo principal da API // 👇 Execução em modo "cluster" (um processo por core da máquina) exec_mode: "cluster", instances: "max", // "max" = usa todos os núcleos disponíveis // ⚙️ Variáveis de ambiente padrão (modo development) env: { watch: true, NODE_ENV: "development", PORT: 3001 // Porta usada no ambiente de desenvolvimento }, // ⚙️ Variáveis de ambiente quando rodar com `--env production` env_production: { watch: false, NODE_ENV: "production", PORT: 3001 // Porta usada no ambiente de produção } }, ] }; /** * @module server * @description Ponto de entrada principal da aplicação. * Este módulo é responsável por: * Definir a configuração do PM2 para gerenciar a aplicação principal e o serviço de cron jobs. * 1. A aplicação principal (`hubxglpi-api`) roda em modo cluster para lidar com requisições HTTP. Para encerrar chamados. * 2. O serviço de cron jobs (`hubxglpi-cron`) roda em modo fork para evitar execuções duplicadas das tarefas agendadas. */ /** * 💡 Dicas de uso: * * 🧪 Ambiente de desenvolvimento: * pm2 start ecosystem.config.js --env development * * 🚀 Ambiente de produção: * pm2 start ecosystem.config.js --env production * pm2 startup systemd * sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u desenvolvimento --hp /home/desenvolvimento * pm2 save * * ✅ Após isso, o PM2 inicializa automaticamente os dois processos no boot do servidor. */