Atualiza o docker-compose.yml para adicionar volumes persistentes e modifica o start.sh para melhorar a configuração do Nginx e gerenciamento de projetos.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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" <<EOF
|
||||
# Recria config nginx SE não existir
|
||||
if [ ! -f "/etc/nginx/sites-dynamic/${project}.conf" ]; then
|
||||
echo " → Recriando config nginx para $project"
|
||||
cat > "/etc/nginx/sites-dynamic/${project}.conf" <<EOF
|
||||
location /${project}/ {
|
||||
proxy_pass http://localhost:${port}/;
|
||||
proxy_http_version 1.1;
|
||||
@@ -52,25 +43,33 @@ location /${project}/ {
|
||||
proxy_cache_bypass \$http_upgrade;
|
||||
}
|
||||
EOF
|
||||
echo "$port" > "$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}/<projeto>"
|
||||
echo " Acesse: http://${DOMAIN:-localhost}/<projeto>"
|
||||
echo "================================================"
|
||||
|
||||
# Mantém o container vivo e faz log do PM2
|
||||
pm2 logs --raw
|
||||
pm2 logs --raw
|
||||
Reference in New Issue
Block a user