discordBot/docker-audit.md

72 lines
3.4 KiB
Markdown

# Docker Audit — Discord Bot
## ✅ Что уже есть
| Файл | Статус |
|--------------------|---------|
| Dockerfile | ✅ Есть |
| docker-compose.yml | ✅ Есть |
| .dockerignore | ✅ Есть |
| requirements.txt | ✅ Есть |
| .env.example | ✅ Есть |
## ⚠️ Что можно улучшить
### 1. Dockerfile копирует весь проект целиком
Включая тесты, `console_commands/`, `.git`, `.pytest_cache` и прочее.
Стоит копировать только нужное: `bot.py`, `commands/`, `utils/`.
### 2. Версия Python
Dockerfile использует `python:3.12-slim`, но локально Python 3.14.
Discord.py 2.3.2+ поддерживает 3.12+, но стоит убедиться, что зависимости совместимы.
Обновить базовый образ до `python:3.14-slim`.
### 3. Нет .env в контейнере
docker-compose передаёт переменные через `environment:`, это работает,
но бот при запуске читает `.env` через `python-dotenv`.
Если запустить контейнер без `.env` на хосте, `DISCORD_TOKEN` не подтянется.
Решение: копировать `.env` в образ или убедиться, что `environment:` в compose передаёт все нужные переменные.
### 4. Нет healthcheck
Нет способа проверить, жив ли бот через Docker.
### 5. Нет ARG для тега образа
Нет возможности указать версию Python при сборке.
---
## 📋 План улучшений
### 1. Dockerfile
- Обновить базовый образ до `python:3.14-slim`
- Добавить `ARG PYTHON_VERSION` для гибкости
- Оптимизировать COPY: копировать только `bot.py`, `commands/`, `utils/`
- Добавить `.env` в образ (или убедиться, что env vars передаются корректно)
- Добавить healthcheck
- Добавить `.dockerenv` или аналог для предотвращения копирования лишних файлов
### 2. docker-compose.yml
- Добавить healthcheck для сервиса бота
- Добавить volumes для логов
- Убедиться, что все переменные из `.env` передаются в контейнер
- Добавить restart policy
### 3. .dockerignore
- Добавить `.vscode/`
- Добавить `__pycache__/` (уже есть, проверить)
- Добавить `.pytest_cache/`
- Добавить `node_modules/`
- Добавить `*.pyc`
---
## 🚀 Приоритет
| Приоритет | Изменение | Почему |
|-----------|-----------|--------|
| 🔴 Высокий | Оптимизировать COPY | Уменьшает размер образа, ускоряет сборку |
| 🔴 Высокий | Добавить healthcheck | Мониторинг состояния бота |
| 🟡 Средний | Обновить Python до 3.14 | Актуальность, но не критично |
| 🟡 Средний | Добавить volumes для логов | Удобство отладки |
| 🟢 Низкий | Добавить ARG для тега | Удобство, но не обязательно |