This commit is contained in:
2025-08-08 10:39:10 +09:00
parent 05bc50269d
commit c8068aea1d
223 changed files with 2199 additions and 13 deletions

View File

@@ -1,17 +1,31 @@
#!/bin/bash
set -e
# Загружаем переменные окружения
source .env
BACKUP_DIR="./backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
FILENAME="backup_${TIMESTAMP}.sql"
echo "💾 1. Создаём бэкап базы..."
mkdir -p $BACKUP_DIR
docker compose exec db mysqldump -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "${BACKUP_DIR}/${FILENAME}"
echo "✅ Бэкап сохранён: ${BACKUP_DIR}/${FILENAME}"
mkdir -p "$BACKUP_DIR"
# гарантируем, что db поднята
docker compose up -d db
# ждём доступности сервиса (не обязательно, но полезно)
# docker compose healthcheck можно добавить в compose, но тут просто пауза:
sleep 3
# Пытаемся mariadb-dump, если нет — mysqldump. Берём MYSQL_* из окружения контейнера.
if ! docker compose exec -T db sh -lc 'command -v mariadb-dump >/dev/null 2>&1 || command -v mysqldump >/dev/null 2>&1'; then
echo "⚠️ В контейнере нет mariadb-dump/mysqldump. Пропускаю бэкап."
else
docker compose exec -T db sh -lc '
DUMP_BIN=$(command -v mariadb-dump || command -v mysqldump);
"$DUMP_BIN" \
-h127.0.0.1 \
-u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" \
--single-transaction --quick --lock-tables=false
' > "${BACKUP_DIR}/${FILENAME}" || echo "⚠️ Бэкап не получился (возможно, ещё пустая БД). Продолжаю..."
fi
echo "📥 2. Получаем обновления из git..."
git pull
@@ -20,11 +34,10 @@ echo "🔨 3. Собираем контейнеры..."
docker compose build
echo "⬆ 4. Применяем миграции..."
docker compose exec django python manage.py migrate
docker compose up -d django
docker compose exec -T django python manage.py makemigrations && docker compose exec -T django python manage.py migrate
echo "🔄 5. Перезапускаем сервисы..."
docker compose down
docker compose up -d
echo "🎉 Деплой завершён успешно!"
echo "✅ Все операции выполнены успешно."