diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..308f04d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +# В образ не нужны: +.git +.gitignore +__pycache__/ +*.pyc +*.log +bot.lock +bot_database.db +*.xlsx +data/ +tests/ +docs/ +help_img/_orig/ +# .env не копируем в образ — настройки прокидываются через env_file в docker-compose +.env diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9bf5900 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Образ бота «Кибершкола БАЗА» (VK). Python 3.11. +FROM python:3.11-slim + +# Не писать .pyc, логи — сразу в вывод (docker logs) +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +# Сначала зависимости — так слой кэшируется и пересборка быстрее +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Код бота +COPY . . + +# Каталог для базы (монтируется как volume, чтобы данные не терялись) +RUN mkdir -p /app/data +ENV DB_PATH=/app/data/bot_database.db + +# Запуск бота (long poll, слушает VK) +CMD ["python", "-u", "bot.py"] diff --git a/bot.py b/bot.py index 193a84c..6e8fcee 100644 --- a/bot.py +++ b/bot.py @@ -34,8 +34,9 @@ logging.basicConfig( ) logger = logging.getLogger("VK_Bot_IKP") -# Инициализация базы данных сессий -db = DatabaseManager() +# Инициализация базы данных сессий. +# Путь можно переопределить через DB_PATH (нужно для Docker: база в volume). +db = DatabaseManager(os.getenv("DB_PATH") or "bot_database.db") # Анти-флуд: максимум сообщений от одного пользователя за окно времени FLOOD_MAX_MSGS = 12 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9926435 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +# Запуск бота «Кибершкола БАЗА» в Docker. +# +# Быстрый старт (в папке с этим файлом): +# 1) Заполните .env (VK_TOKEN и VK_GROUP_ID — обязательно). +# 2) docker compose up -d --build # собрать и запустить в фоне +# 3) docker compose logs -f # смотреть логи (Ctrl+C — выйти из логов) +# Остановить: docker compose down +# Обновить код: git pull && docker compose up -d --build + +services: + bot: + build: . + image: baza-bot + container_name: baza-bot + restart: unless-stopped # авто-перезапуск при сбое и после ребута сервера + env_file: + - .env # настройки берутся из .env (токен, ID и пр.) + environment: + - DB_PATH=/app/data/bot_database.db + volumes: + - baza-bot-data:/app/data # база данных сохраняется между перезапусками + +volumes: + baza-bot-data: diff --git a/requirements.txt b/requirements.txt index b0f96ef..98b8560 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,2 @@ vk_api>=11.9 requests>=2.28 -openpyxl>=3.1 -Pillow>=10.0