Files
tg_autopost/bin/deploy.sh
2025-08-08 10:39:10 +09:00

44 lines
1.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
BACKUP_DIR="./backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
FILENAME="backup_${TIMESTAMP}.sql"
echo "💾 1. Создаём бэкап базы..."
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
echo "🔨 3. Собираем контейнеры..."
docker compose build
echo "⬆ 4. Применяем миграции..."
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 up -d
echo "🎉 Деплой завершён успешно!"