74 lines
2.5 KiB
Bash
74 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Скрипт для обновления и перезапуска приложения через Docker
|
|
# Использование: ./deploy.sh
|
|
|
|
set -e # Остановка при ошибке
|
|
|
|
echo "🚀 Начинаем обновление..."
|
|
|
|
echo ""
|
|
echo "📥 Шаг 1/5: Обновление кода из Git..."
|
|
# Сохраняем локальные изменения в stash (если есть)
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
echo "⚠️ Обнаружены локальные изменения, сохраняем в stash..."
|
|
git stash push -m "Auto-stash before deploy $(date +%Y-%m-%d_%H:%M:%S)" || true
|
|
fi
|
|
# Получаем последние изменения из репозитория
|
|
git fetch origin
|
|
# Определяем текущую ветку
|
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
# Принудительно обновляем до состояния репозитория
|
|
git reset --hard origin/$BRANCH
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Код обновлен из Git (ветка: $BRANCH)"
|
|
else
|
|
echo "❌ Ошибка при обновлении кода из Git"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "🛑 Шаг 2/5: Остановка контейнеров..."
|
|
docker compose down
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Контейнеры остановлены"
|
|
else
|
|
echo "❌ Ошибка при остановке контейнеров"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "💾 Шаг 3/5: Остановка Redis (если запущен)..."
|
|
docker compose stop redis 2>/dev/null || true
|
|
echo "✅ Redis остановлен (если был запущен)"
|
|
|
|
echo ""
|
|
echo "🔨 Шаг 4/5: Сборка образов (без кеша)..."
|
|
docker compose build --no-cache
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Образы собраны успешно"
|
|
else
|
|
echo "❌ Ошибка при сборке образов"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "▶️ Шаг 5/5: Запуск контейнеров..."
|
|
docker compose up -d
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Контейнеры запущены"
|
|
echo ""
|
|
echo "⏳ Ожидание готовности Redis..."
|
|
sleep 3
|
|
docker compose ps redis | grep -q "Up" && echo "✅ Redis запущен" || echo "⚠️ Redis не запущен (работаем без БД)"
|
|
else
|
|
echo "❌ Ошибка при запуске контейнеров"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "🎉 Обновление завершено успешно!"
|
|
echo ""
|
|
echo "📊 Статус контейнеров:"
|
|
docker compose ps
|