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"
|
- "3451:80"
|
||||||
volumes:
|
volumes:
|
||||||
- /home/deploy/projects:/home/deploy/projects
|
- /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:
|
environment:
|
||||||
- PROJECTS_DIR=/home/deploy/projects
|
- PROJECTS_DIR=/home/deploy/projects
|
||||||
- BASE_PORT=3000
|
- BASE_PORT=3000
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# start.sh — entrypoint do container
|
|
||||||
# Roda ao iniciar/resetar o container
|
|
||||||
|
|
||||||
PROJECTS_DIR="${PROJECTS_DIR:-/home/deploy/projects}"
|
PROJECTS_DIR="${PROJECTS_DIR:-/home/deploy/projects}"
|
||||||
BASE_PORT="${BASE_PORT:-3000}"
|
BASE_PORT="${BASE_PORT:-3000}"
|
||||||
|
|
||||||
@@ -9,19 +6,14 @@ echo "================================================"
|
|||||||
echo " NestJS Stack — Iniciando..."
|
echo " NestJS Stack — Iniciando..."
|
||||||
echo "================================================"
|
echo "================================================"
|
||||||
|
|
||||||
# Garante que a pasta de projetos existe
|
|
||||||
mkdir -p "$PROJECTS_DIR"
|
mkdir -p "$PROJECTS_DIR"
|
||||||
mkdir -p /etc/nginx/sites-dynamic
|
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
|
# Inicia nginx
|
||||||
echo "→ Iniciando Nginx..."
|
echo "→ Iniciando Nginx..."
|
||||||
nginx -t && nginx
|
nginx -t && nginx
|
||||||
echo "✓ Nginx rodando"
|
echo "✓ Nginx rodando"
|
||||||
|
|
||||||
# Se houver projetos com build existente, sobe eles via PM2
|
|
||||||
echo "→ Verificando projetos existentes..."
|
echo "→ Verificando projetos existentes..."
|
||||||
port_index=1
|
port_index=1
|
||||||
|
|
||||||
@@ -30,16 +22,15 @@ for project_dir in "$PROJECTS_DIR"/*/; do
|
|||||||
project=$(basename "$project_dir")
|
project=$(basename "$project_dir")
|
||||||
port=$((BASE_PORT + port_index))
|
port=$((BASE_PORT + port_index))
|
||||||
|
|
||||||
# Só sobe se já tiver build
|
|
||||||
if [ -f "$project_dir/dist/main.js" ]; then
|
if [ -f "$project_dir/dist/main.js" ]; then
|
||||||
echo " → Subindo $project na porta $port"
|
echo " → Subindo $project na porta $port"
|
||||||
|
|
||||||
pm2 start "$project_dir/dist/main.js" \
|
# Salva porta
|
||||||
--name "$project" \
|
echo "$port" > "$project_dir/.port"
|
||||||
--env production \
|
|
||||||
-- --port "$port" 2>/dev/null
|
|
||||||
|
|
||||||
# Gera config nginx para esse projeto
|
# 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
|
cat > "/etc/nginx/sites-dynamic/${project}.conf" <<EOF
|
||||||
location /${project}/ {
|
location /${project}/ {
|
||||||
proxy_pass http://localhost:${port}/;
|
proxy_pass http://localhost:${port}/;
|
||||||
@@ -52,25 +43,33 @@ location /${project}/ {
|
|||||||
proxy_cache_bypass \$http_upgrade;
|
proxy_cache_bypass \$http_upgrade;
|
||||||
}
|
}
|
||||||
EOF
|
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
|
else
|
||||||
echo " ⚠ $project sem build — rode: docker exec nestjs-stack /home/deploy/scripts/deploy.sh $project"
|
pm2 restart "$project"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " ⚠ $project sem build — rode: ./host-deploy.sh $project"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
port_index=$((port_index + 1))
|
port_index=$((port_index + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
# Recarrega nginx com as configs dos projetos
|
|
||||||
nginx -s reload 2>/dev/null || true
|
nginx -s reload 2>/dev/null || true
|
||||||
echo "✓ Nginx atualizado com rotas dos projetos"
|
echo "✓ Nginx atualizado"
|
||||||
|
|
||||||
pm2 save 2>/dev/null || true
|
pm2 save 2>/dev/null || true
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "================================================"
|
echo "================================================"
|
||||||
echo " Stack pronta!"
|
echo " Stack pronta!"
|
||||||
echo " Acesse: http://\${DOMAIN:-localhost}/<projeto>"
|
echo " Acesse: http://${DOMAIN:-localhost}/<projeto>"
|
||||||
echo "================================================"
|
echo "================================================"
|
||||||
|
|
||||||
# Mantém o container vivo e faz log do PM2
|
|
||||||
pm2 logs --raw
|
pm2 logs --raw
|
||||||
Reference in New Issue
Block a user