#!/bin/bash # start.sh — entrypoint do container # Roda ao iniciar/resetar o container PROJECTS_DIR="${PROJECTS_DIR:-/home/deploy/projects}" BASE_PORT="${BASE_PORT:-3000}" echo "================================================" echo " NestJS Stack — Iniciando..." echo "================================================" # Garante que a pasta de projetos existe mkdir -p "$PROJECTS_DIR" mkdir -p /etc/nginx/sites-dynamic # Limpa configs antigas do nginx (container pode ter sido resetado) rm -f /etc/nginx/sites-dynamic/*.conf # Inicia nginx echo "→ Iniciando Nginx..." nginx -t && nginx echo "✓ Nginx rodando" # Se houver projetos com build existente, sobe eles via PM2 echo "→ Verificando projetos existentes..." port_index=1 for project_dir in "$PROJECTS_DIR"/*/; do [ -d "$project_dir" ] || continue project=$(basename "$project_dir") port=$((BASE_PORT + port_index)) # Só sobe se já tiver build if [ -f "$project_dir/dist/main.js" ]; then echo " → Subindo $project na porta $port" pm2 start "$project_dir/dist/main.js" \ --name "$project" \ --env production \ -- --port "$port" 2>/dev/null # Gera config nginx para esse projeto cat > "/etc/nginx/sites-dynamic/${project}.conf" < "$project_dir/.port" else echo " ⚠ $project sem build — rode: docker exec nestjs-stack /home/deploy/scripts/deploy.sh $project" fi port_index=$((port_index + 1)) done # Recarrega nginx com as configs dos projetos nginx -s reload 2>/dev/null || true echo "✓ Nginx atualizado com rotas dos projetos" pm2 save 2>/dev/null || true echo "" echo "================================================" echo " Stack pronta!" echo " Acesse: http://\${DOMAIN:-localhost}/" echo "================================================" # Mantém o container vivo e faz log do PM2 pm2 logs --raw