Создано: - Dockerfile для контейнеризации бота - docker-compose.yml с сервисами bot и db - .dockerignore для оптимизации образа - README_DOCKER.md с подробной документацией Изменено: - README.md - добавлена секция Docker - .env.example - добавлены переменные PostgreSQL Теперь бот можно запустить одной командой: docker-compose up -d 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.8 KiB
3.8 KiB
🐳 Запуск через Docker Compose
Быстрый старт
- Клонировать репозиторий:
git clone http://103.137.249.134:3000/NANDI/tg_bot_language.git
cd tg_bot_language
- Настроить переменные окружения:
cp .env.example .env
nano .env # или используйте любой редактор
Заполните обязательные поля в .env:
BOT_TOKEN=ваш_telegram_bot_token
OPENAI_API_KEY=ваш_openai_api_key
- Запустить:
docker-compose up -d
- Проверить логи:
docker-compose logs -f bot
Управление
Запуск
docker-compose up -d
Остановка
docker-compose down
Перезапуск
docker-compose restart
Пересборка после изменений
docker-compose up -d --build
Просмотр логов
# Все сервисы
docker-compose logs -f
# Только бот
docker-compose logs -f bot
# Только база данных
docker-compose logs -f db
Статус контейнеров
docker-compose ps
Работа с базой данных
Подключение к PostgreSQL
docker-compose exec db psql -U botuser -d language_bot
Бэкап базы данных
docker-compose exec db pg_dump -U botuser language_bot > backup.sql
Восстановление из бэкапа
docker-compose exec -T db psql -U botuser language_bot < backup.sql
Структура Docker
Сервисы
-
db - PostgreSQL 15 (база данных)
- Порт: 5432
- Volume:
postgres_dataдля персистентности - Health check для проверки готовности
-
bot - Telegram бот (Python приложение)
- Зависит от
db - Автоматический рестарт
- Логи в
./logs
- Зависит от
Volumes
postgres_data- данные PostgreSQL (персистентные)./logs- логи бота (на хосте)
Переменные окружения
Полный список переменных в .env:
# Обязательные
BOT_TOKEN=your_token # Токен от @BotFather
OPENAI_API_KEY=your_key # API ключ OpenAI
# PostgreSQL (можно оставить по умолчанию)
POSTGRES_USER=botuser
POSTGRES_PASSWORD=botpassword
POSTGRES_DB=language_bot
# Настройки
DEBUG=True
Troubleshooting
Бот не запускается
- Проверьте логи:
docker-compose logs bot
- Проверьте, что база данных запущена:
docker-compose ps db
- Проверьте переменные окружения в
.env
База данных недоступна
# Проверить статус
docker-compose ps db
# Перезапустить базу
docker-compose restart db
# Проверить логи
docker-compose logs db
Очистка и полный перезапуск
# Остановить и удалить контейнеры
docker-compose down
# Удалить volumes (ВНИМАНИЕ: удалит все данные!)
docker-compose down -v
# Пересобрать и запустить
docker-compose up -d --build
Production рекомендации
- Изменить пароли БД в
.env - Отключить DEBUG:
DEBUG=False - Настроить регулярные бэкапы БД
- Использовать Docker secrets для чувствительных данных
- Настроить мониторинг логов и метрик