Some checks reported errors
continuous-integration/drone Build encountered an error
149 lines
3.8 KiB
Bash
Executable File
149 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Скрипт для локальной разработки с Docker
|
||
|
||
set -e
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||
|
||
echo "🐳 Quiz Bot Development Script"
|
||
echo "=============================="
|
||
|
||
# Функция для проверки Docker
|
||
check_docker() {
|
||
if ! command -v docker &> /dev/null; then
|
||
echo "❌ Docker не установлен!"
|
||
exit 1
|
||
fi
|
||
|
||
if ! docker info &> /dev/null; then
|
||
echo "❌ Docker daemon не запущен!"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Docker готов к работе"
|
||
}
|
||
|
||
# Функция для сборки образа
|
||
build_image() {
|
||
echo "🔨 Сборка Docker образа..."
|
||
cd "$PROJECT_ROOT"
|
||
docker build -t quiz-bot:dev .
|
||
echo "✅ Образ собран: quiz-bot:dev"
|
||
}
|
||
|
||
# Функция для запуска в development режиме
|
||
run_dev() {
|
||
echo "🚀 Запуск в режиме разработки..."
|
||
cd "$PROJECT_ROOT"
|
||
|
||
# Проверяем .env файл
|
||
if [ ! -f .env ]; then
|
||
echo "⚠️ Файл .env не найден. Создаём шаблон..."
|
||
cat > .env << EOF
|
||
BOT_TOKEN=your_bot_token_here
|
||
DATABASE_PATH=data/quiz_bot.db
|
||
CSV_DATA_PATH=data/
|
||
LOG_LEVEL=DEBUG
|
||
EOF
|
||
echo "📝 Заполните .env файл и запустите скрипт снова"
|
||
exit 1
|
||
fi
|
||
|
||
# Создаём директории если их нет
|
||
mkdir -p data logs
|
||
|
||
docker-compose up --build
|
||
}
|
||
|
||
# Функция для остановки
|
||
stop_dev() {
|
||
echo "🛑 Остановка сервисов..."
|
||
cd "$PROJECT_ROOT"
|
||
docker-compose down
|
||
echo "✅ Сервисы остановлены"
|
||
}
|
||
|
||
# Функция для очистки
|
||
cleanup() {
|
||
echo "🧹 Очистка Docker ресурсов..."
|
||
cd "$PROJECT_ROOT"
|
||
docker-compose down --volumes --remove-orphans
|
||
docker image rm quiz-bot:dev 2>/dev/null || true
|
||
docker system prune -f
|
||
echo "✅ Очистка завершена"
|
||
}
|
||
|
||
# Функция для тестирования
|
||
test_app() {
|
||
echo "🧪 Запуск тестов..."
|
||
cd "$PROJECT_ROOT"
|
||
|
||
# Сборка тестового образа
|
||
docker build -t quiz-bot:test .
|
||
|
||
# Запуск тестов в контейнере
|
||
docker run --rm \
|
||
-e BOT_TOKEN=test_token \
|
||
-e DATABASE_PATH=":memory:" \
|
||
quiz-bot:test \
|
||
python -m pytest test_*.py -v
|
||
|
||
echo "✅ Тесты завершены"
|
||
}
|
||
|
||
# Функция для логов
|
||
show_logs() {
|
||
echo "📋 Показ логов..."
|
||
cd "$PROJECT_ROOT"
|
||
docker-compose logs -f quiz-bot
|
||
}
|
||
|
||
# Главное меню
|
||
case "${1:-menu}" in
|
||
"build")
|
||
check_docker
|
||
build_image
|
||
;;
|
||
"run"|"start")
|
||
check_docker
|
||
run_dev
|
||
;;
|
||
"stop")
|
||
check_docker
|
||
stop_dev
|
||
;;
|
||
"restart")
|
||
check_docker
|
||
stop_dev
|
||
run_dev
|
||
;;
|
||
"test")
|
||
check_docker
|
||
test_app
|
||
;;
|
||
"logs")
|
||
check_docker
|
||
show_logs
|
||
;;
|
||
"cleanup")
|
||
check_docker
|
||
cleanup
|
||
;;
|
||
"menu"|*)
|
||
echo ""
|
||
echo "Использование: $0 [команда]"
|
||
echo ""
|
||
echo "Команды:"
|
||
echo " build - Собрать Docker образ"
|
||
echo " run - Запустить в режиме разработки"
|
||
echo " stop - Остановить сервисы"
|
||
echo " restart - Перезапустить сервисы"
|
||
echo " test - Запустить тесты"
|
||
echo " logs - Показать логи"
|
||
echo " cleanup - Очистить Docker ресурсы"
|
||
echo ""
|
||
;;
|
||
esac
|