Files
docker-nest-js/scripts/start.sh

78 lines
2.3 KiB
Bash

#!/bin/bash
# start.sh — entrypoint do container
# NÃO apaga projetos nem configs existentes — só sobe o que falta
PROJECTS_DIR="${PROJECTS_DIR:-/home/deploy/projects}"
BASE_PORT="${BASE_PORT:-3000}"
echo "================================================"
echo " NestJS Stack — Iniciando..."
echo "================================================"
mkdir -p "$PROJECTS_DIR"
mkdir -p /etc/nginx/sites-dynamic
# Inicia nginx
echo "→ Iniciando Nginx..."
nginx -t && nginx
echo "✓ Nginx rodando"
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))
if [ -f "$project_dir/dist/main.js" ]; then
echo " → Subindo $project na porta $port"
echo "$port" > "$project_dir/.port"
# Recria config nginx SOMENTE se não existir
if [ ! -f "/etc/nginx/sites-dynamic/${project}.conf" ]; then
echo " → Criando config nginx para $project"
cat > "/etc/nginx/sites-dynamic/${project}.conf" <<EOF
location /${project}/ {
proxy_pass http://localhost:${port}/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_cache_bypass \$http_upgrade;
}
EOF
fi
# Sobe no PM2 se não estiver rodando, senão reinicia
if pm2 describe "$project" > /dev/null 2>&1; then
pm2 restart "$project"
else
pm2 start "$project_dir/dist/main.js" \
--name "$project" \
--env production \
-- --port "$port"
fi
else
echo "$project sem build — rode: ./host-deploy.sh $project"
fi
port_index=$((port_index + 1))
done
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}/<projeto>"
echo "================================================"
pm2 logs --raw