Atualiza scripts e configurações do projeto para melhorar o gerenciamento de projetos e a estrutura do repositório
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
# deploy.sh — deploya um projeto ou todos
|
||||
# Uso dentro do container:
|
||||
# deploy.sh — deploya um projeto ou todos (roda DENTRO do container)
|
||||
# Uso:
|
||||
# /home/deploy/scripts/deploy.sh → deploya todos
|
||||
# /home/deploy/scripts/deploy.sh meu-projeto → deploya só um
|
||||
|
||||
@@ -23,6 +23,11 @@ deploy_project() {
|
||||
|
||||
cd "$project_dir"
|
||||
|
||||
# Mantém .env existente
|
||||
if [ -f "$project_dir/.env" ]; then
|
||||
echo " → .env encontrado, mantendo..."
|
||||
fi
|
||||
|
||||
# Instala dependências
|
||||
echo " → npm install..."
|
||||
npm install --prefer-offline 2>&1 | tail -3
|
||||
@@ -72,8 +77,6 @@ EOF
|
||||
# -------------------------------------------
|
||||
|
||||
if [ -n "$TARGET" ]; then
|
||||
# Deploya projeto específico
|
||||
# Descobre qual porta estava reservada ou pega a próxima livre
|
||||
port_index=1
|
||||
for d in "$PROJECTS_DIR"/*/; do
|
||||
[ -d "$d" ] || continue
|
||||
@@ -86,7 +89,6 @@ if [ -n "$TARGET" ]; then
|
||||
port=$((BASE_PORT + port_index))
|
||||
deploy_project "$TARGET" "$port"
|
||||
else
|
||||
# Deploya todos os projetos
|
||||
port_index=1
|
||||
for project_dir in "$PROJECTS_DIR"/*/; do
|
||||
[ -d "$project_dir" ] || continue
|
||||
@@ -97,7 +99,6 @@ else
|
||||
done
|
||||
fi
|
||||
|
||||
# Recarrega nginx
|
||||
echo ""
|
||||
echo "→ Recarregando Nginx..."
|
||||
nginx -s reload
|
||||
|
||||
14
scripts/hot-deploy.sh
Normal file
14
scripts/hot-deploy.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
# host-deploy.sh — rode isso NO HOST para deployar um projeto
|
||||
# Uso: ./host-deploy.sh meu-projeto
|
||||
# Ou: ./host-deploy.sh (deploya todos)
|
||||
|
||||
TARGET="${1:-}"
|
||||
|
||||
if [ -n "$TARGET" ]; then
|
||||
echo ">>> Deployando $TARGET via container..."
|
||||
docker exec nestjs-stack /home/deploy/scripts/deploy.sh "$TARGET"
|
||||
else
|
||||
echo ">>> Deployando todos os projetos via container..."
|
||||
docker exec nestjs-stack /home/deploy/scripts/deploy.sh
|
||||
fi
|
||||
55
scripts/hot-remove.sh
Normal file
55
scripts/hot-remove.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
# host-remove.sh — remove um projeto completamente
|
||||
# Uso: ./host-remove.sh meu-projeto
|
||||
# Uso: ./host-remove.sh meu-projeto --keep-files (mantém os arquivos no host)
|
||||
|
||||
TARGET="${1:-}"
|
||||
KEEP_FILES="${2:-}"
|
||||
PROJECTS_DIR="/home/deploy/projects"
|
||||
|
||||
if [ -z "$TARGET" ]; then
|
||||
echo "❌ Informe o nome do projeto."
|
||||
echo " Uso: ./host-remove.sh meu-projeto"
|
||||
echo " Uso: ./host-remove.sh meu-projeto --keep-files"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "================================================"
|
||||
echo " Removendo projeto: $TARGET"
|
||||
echo "================================================"
|
||||
|
||||
# 1. Para e remove do PM2
|
||||
echo "→ Removendo do PM2..."
|
||||
docker exec nestjs-stack pm2 delete "$TARGET" 2>/dev/null && echo " ✓ PM2 removido" || echo " ⚠ Não estava no PM2"
|
||||
|
||||
# 2. Remove config do nginx
|
||||
echo "→ Removendo config do Nginx..."
|
||||
docker exec nestjs-stack rm -f "/etc/nginx/sites-dynamic/${TARGET}.conf" && echo " ✓ Config nginx removida"
|
||||
|
||||
# 3. Recarrega nginx
|
||||
echo "→ Recarregando Nginx..."
|
||||
docker exec nestjs-stack nginx -s reload && echo " ✓ Nginx recarregado"
|
||||
|
||||
# 4. Salva estado do PM2
|
||||
docker exec nestjs-stack pm2 save
|
||||
|
||||
# 5. Remove arquivos do host (opcional)
|
||||
if [ "$KEEP_FILES" = "--keep-files" ]; then
|
||||
echo " → Arquivos mantidos em $PROJECTS_DIR/$TARGET"
|
||||
else
|
||||
if [ -d "$PROJECTS_DIR/$TARGET" ]; then
|
||||
echo "→ Removendo arquivos do projeto..."
|
||||
rm -rf "$PROJECTS_DIR/$TARGET"
|
||||
echo " ✓ Pasta $PROJECTS_DIR/$TARGET removida"
|
||||
else
|
||||
echo " ⚠ Pasta $PROJECTS_DIR/$TARGET não encontrada"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "================================================"
|
||||
echo " ✓ Projeto $TARGET removido com sucesso!"
|
||||
if [ "$KEEP_FILES" = "--keep-files" ]; then
|
||||
echo " ℹ Arquivos mantidos em $PROJECTS_DIR/$TARGET"
|
||||
fi
|
||||
echo "================================================"
|
||||
@@ -1,4 +1,7 @@
|
||||
#!/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}"
|
||||
|
||||
@@ -25,12 +28,11 @@ for project_dir in "$PROJECTS_DIR"/*/; do
|
||||
if [ -f "$project_dir/dist/main.js" ]; then
|
||||
echo " → Subindo $project na porta $port"
|
||||
|
||||
# Salva porta
|
||||
echo "$port" > "$project_dir/.port"
|
||||
|
||||
# Recria config nginx SE não existir
|
||||
# Recria config nginx SOMENTE se não existir
|
||||
if [ ! -f "/etc/nginx/sites-dynamic/${project}.conf" ]; then
|
||||
echo " → Recriando config nginx para $project"
|
||||
echo " → Criando config nginx para $project"
|
||||
cat > "/etc/nginx/sites-dynamic/${project}.conf" <<EOF
|
||||
location /${project}/ {
|
||||
proxy_pass http://localhost:${port}/;
|
||||
@@ -45,14 +47,14 @@ location /${project}/ {
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Sobe no PM2 se não estiver rodando
|
||||
if ! pm2 describe "$project" > /dev/null 2>&1; then
|
||||
# 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"
|
||||
else
|
||||
pm2 restart "$project"
|
||||
fi
|
||||
else
|
||||
echo " ⚠ $project sem build — rode: ./host-deploy.sh $project"
|
||||
@@ -62,7 +64,7 @@ EOF
|
||||
done
|
||||
|
||||
nginx -s reload 2>/dev/null || true
|
||||
echo "✓ Nginx atualizado"
|
||||
echo "✓ Nginx atualizado com rotas dos projetos"
|
||||
|
||||
pm2 save 2>/dev/null || true
|
||||
|
||||
@@ -72,4 +74,4 @@ echo " Stack pronta!"
|
||||
echo " Acesse: http://${DOMAIN:-localhost}/<projeto>"
|
||||
echo "================================================"
|
||||
|
||||
pm2 logs --raw
|
||||
pm2 logs --raw
|
||||
|
||||
Reference in New Issue
Block a user