From 9cc146348fefcb15ae907146d9f861e8fcff0c52 Mon Sep 17 00:00:00 2001 From: Juancjc Date: Sat, 18 Apr 2026 12:25:39 -0500 Subject: [PATCH] =?UTF-8?q?Atualiza=20o=20docker-compose.yml=20para=20adic?= =?UTF-8?q?ionar=20volumes=20persistentes=20e=20modifica=20o=20start.sh=20?= =?UTF-8?q?para=20melhorar=20a=20configura=C3=A7=C3=A3o=20do=20Nginx=20e?= =?UTF-8?q?=20gerenciamento=20de=20projetos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 2 ++ scripts/start.sh | 43 +++++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c3abba5..29edeef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,6 +11,8 @@ services: - "3451:80" volumes: - /home/deploy/projects:/home/deploy/projects + - /home/deploy/nginx-dynamic:/etc/nginx/sites-dynamic # ← persiste configs nginx + - /home/deploy/pm2:/root/.pm2 # ← persiste estado do PM2 environment: - PROJECTS_DIR=/home/deploy/projects - BASE_PORT=3000 diff --git a/scripts/start.sh b/scripts/start.sh index 11cdab4..d6d6229 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,7 +1,4 @@ #!/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}" @@ -9,19 +6,14 @@ 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 @@ -30,17 +22,16 @@ for project_dir in "$PROJECTS_DIR"/*/; do 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 + # Salva porta + echo "$port" > "$project_dir/.port" - # Gera config nginx para esse projeto - cat > "/etc/nginx/sites-dynamic/${project}.conf" < "/etc/nginx/sites-dynamic/${project}.conf" < "$project_dir/.port" + fi + + # Sobe no PM2 se não estiver rodando + if ! pm2 describe "$project" > /dev/null 2>&1; then + pm2 start "$project_dir/dist/main.js" \ + --name "$project" \ + --env production \ + -- --port "$port" + else + pm2 restart "$project" + fi else - echo " ⚠ $project sem build — rode: docker exec nestjs-stack /home/deploy/scripts/deploy.sh $project" + echo " ⚠ $project sem build — rode: ./host-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" +echo "✓ Nginx atualizado" pm2 save 2>/dev/null || true echo "" echo "================================================" echo " Stack pronta!" -echo " Acesse: http://\${DOMAIN:-localhost}/" +echo " Acesse: http://${DOMAIN:-localhost}/" echo "================================================" -# Mantém o container vivo e faz log do PM2 -pm2 logs --raw +pm2 logs --raw \ No newline at end of file