diff --git a/Makefile b/Makefile index b8f8c1a..0ae8e0e 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,7 @@ test-env: ## Проверить переменные окружения test-db: ## Тестировать подключение к БД @echo "🗄️ Testing database connection..." - docker-compose exec $(SERVICE_NAME) python -c "import oracledb, os; conn = oracledb.connect(user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), dsn=os.getenv('DB_DSN')); print('✅ Database connection successful!'); conn.close()" + docker-compose exec $(SERVICE_NAME) python -c "import oracledb, os; conn = oracledb.connect(user=os.getenv('db_user'), password=os.getenv('db_password'), dsn=os.getenv('db_dsn')); print('✅ Database connection successful!'); conn.close()" test-bot: ## Проверить импорты бота @echo "🤖 Testing bot imports..." @@ -91,9 +91,9 @@ backup-logs: ## Создать архив логов @echo "💾 Creating logs backup..." tar -czf logs_backup_$(shell date +%Y%m%d_%H%M%S).tar.gz logs/ -backup-env: ## Создать бэкап переменных окружения - @echo "🔐 Creating environment backup..." - cp .env .env.backup.$(shell date +%Y%m%d_%H%M%S) +backup-config: ## Создать бэкап конфигурации + @echo "🔐 Creating configuration backup..." + cp docker-compose.yml docker-compose.yml.backup.$(shell date +%Y%m%d_%H%M%S) # Деплой deploy: build up ## Полный деплой (сборка + запуск) @@ -132,17 +132,28 @@ update: ## Обновить код и перезапустить # Конфигурация setup: ## Первоначальная настройка @echo "⚙️ Initial setup..." - @if [ ! -f .env ]; then \ - echo "📝 Creating .env file from template..."; \ - cp env.example .env; \ - echo "✅ Please edit .env file with your configuration"; \ - else \ - echo "✅ .env file already exists"; \ - fi @echo "📁 Creating directories..." mkdir -p logs images data chmod 755 logs images data - @echo "✅ Setup complete! Edit .env file and run 'make deploy'" + @echo "✅ Setup complete! Edit docker-compose.yml with your configuration and run 'make deploy'" + +config-check: ## Проверить конфигурацию docker-compose.yml + @echo "🔍 Checking docker-compose.yml configuration..." + @if grep -q "your_bot_token_here" docker-compose.yml; then \ + echo "❌ BOT_TOKEN not configured"; \ + else \ + echo "✅ BOT_TOKEN configured"; \ + fi + @if grep -q "your_db_user" docker-compose.yml; then \ + echo "❌ Database credentials not configured"; \ + else \ + echo "✅ Database credentials configured"; \ + fi + @if grep -q "123456789" docker-compose.yml; then \ + echo "⚠️ ADMIN_USER_ID using default value"; \ + else \ + echo "✅ ADMIN_USER_ID configured"; \ + fi # По умолчанию .DEFAULT_GOAL := help \ No newline at end of file diff --git a/README_DOCKER.md b/README_DOCKER.md index 97fdae0..0d0aa4b 100644 --- a/README_DOCKER.md +++ b/README_DOCKER.md @@ -11,19 +11,27 @@ ## 🚀 Быстрый старт -### 1. Подготовка переменных окружения +### 1. Настройка конфигурации -Скопируйте файл с примером и настройте переменные: +Отредактируйте файл `docker-compose.yml` и замените значения по умолчанию на ваши: -```bash -cp env.example .env -nano .env +```yaml +environment: + # Telegram Bot настройки + - BOT_TOKEN=your_actual_bot_token_here # Замените на токен от @BotFather + - BOT_NAME=SalvageDB Bot + - ADMIN_USER_ID=your_telegram_user_id # Замените на ваш Telegram ID + + # База данных Oracle + - db_user=your_actual_db_user # Замените на пользователя БД + - db_password=your_actual_db_password # Замените на пароль БД + - db_dsn=your_db_host:1521/service_name # Замените на DSN вашей БД ``` -Обязательно настройте следующие переменные: +**Обязательно замените:** - `BOT_TOKEN` - токен от @BotFather -- `DB_USER`, `DB_PASSWORD`, `DB_DSN` - настройки Oracle DB - `ADMIN_USER_ID` - ваш Telegram ID для админ-функций +- `db_user`, `db_password`, `db_dsn` - настройки Oracle DB ### 2. Создание необходимых директорий @@ -31,7 +39,7 @@ nano .env # Создаем директории для данных mkdir -p logs images data -# Устанавливаем права доступа +# Устанавливаем права доступа (Linux/macOS) chmod 755 logs images data ``` @@ -53,10 +61,10 @@ docker-compose logs -f salvagedb-bot ``` salvagedb_bot/ ├── Dockerfile # Конфигурация Docker образа -├── docker-compose.yml # Orchestration конфигурация +├── docker-compose.yml # Orchestration конфигурация (содержит все настройки) ├── docker-entrypoint.sh # Скрипт инициализации ├── .dockerignore # Исключения для Docker -├── env.example # Пример переменных окружения +├── env.example # Пример переменных (справочно) ├── requirements.txt # Python зависимости ├── main.py # Основной код бота ├── db.py # Модуль работы с БД @@ -68,21 +76,25 @@ salvagedb_bot/ ## 🔧 Конфигурация -### Переменные окружения +### Переменные окружения в docker-compose.yml + +Все настройки находятся в файле `docker-compose.yml` в секции `environment`: | Переменная | Описание | Значение по умолчанию | |-----------|----------|----------------------| -| `BOT_TOKEN` | Токен Telegram бота | **Обязательно** | +| `BOT_TOKEN` | Токен Telegram бота | `your_bot_token_here` ⚠️ | | `BOT_NAME` | Имя бота | `SalvageDB Bot` | -| `ADMIN_USER_ID` | ID администратора | **Обязательно** | +| `ADMIN_USER_ID` | ID администратора | `123456789` ⚠️ | | `DECODE_PRICE` | Цена декодирования VIN | `1` | | `CHECK_PRICE` | Цена проверки повреждений | `10` | | `IMG_PRICE` | Цена доступа к фото | `100` | -| `DB_USER` | Пользователь Oracle DB | **Обязательно** | -| `DB_PASSWORD` | Пароль Oracle DB | **Обязательно** | -| `DB_DSN` | DSN строка Oracle DB | **Обязательно** | +| `db_user` | Пользователь Oracle DB | `your_db_user` ⚠️ | +| `db_password` | Пароль Oracle DB | `your_db_password` ⚠️ | +| `db_dsn` | DSN строка Oracle DB | `localhost:1521/XEPDB1` ⚠️ | | `DEBUG` | Режим отладки | `0` | -| `TIMEZONE` | Часовой пояс | `UTC` | +| `TZ` | Часовой пояс | `UTC` | + +**⚠️ Обязательно замените** отмеченные значения на реальные! ### Volumes @@ -150,7 +162,7 @@ docker inspect salvagedb-telegram-bot ### Рекомендации 1. **Переменные окружения:** - - Никогда не коммитьте `.env` файл + - Замените все placeholder значения в docker-compose.yml - Используйте сильные пароли для БД - Ограничьте доступ к токену бота @@ -174,7 +186,7 @@ docker-compose exec salvagedb-bot python -c "import oracledb; print(oracledb.ver docker-compose exec salvagedb-bot python -c " import oracledb import os -conn = oracledb.connect(user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), dsn=os.getenv('DB_DSN')) +conn = oracledb.connect(user=os.getenv('db_user'), password=os.getenv('db_password'), dsn=os.getenv('db_dsn')) print('Connection successful!') conn.close() " @@ -190,14 +202,14 @@ print('Bot token length:', len(os.getenv('BOT_TOKEN', ''))) " # Проверка aiogram -docker-compose exec salvagebot-bot python -c "import aiogram; print('aiogram version:', aiogram.__version__)" +docker-compose exec salvagedb-bot python -c "import aiogram; print('aiogram version:', aiogram.__version__)" ``` ### Логи отладки ```bash -# Включить DEBUG режим -echo "DEBUG=1" >> .env +# Включить DEBUG режим (отредактировать docker-compose.yml) +# Изменить: DEBUG=1 docker-compose restart # Просмотр подробных логов @@ -225,7 +237,7 @@ docker-compose logs -f salvagedb-bot При возникновении проблем: 1. Проверьте логи: `docker-compose logs salvagedb-bot` -2. Убедитесь в правильности переменных окружения +2. Убедитесь в правильности переменных в docker-compose.yml 3. Проверьте подключение к Oracle DB 4. Проверьте валидность токена бота diff --git a/docker-compose.yml b/docker-compose.yml index 3f8e54c..66b0b3d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,24 +11,24 @@ services: # Переменные окружения environment: # Telegram Bot настройки - - BOT_TOKEN=${BOT_TOKEN} - - BOT_NAME=${BOT_NAME:-SalvageDB Bot} - - ADMIN_USER_ID=${ADMIN_USER_ID} + - BOT_TOKEN=your_bot_token_here + - BOT_NAME=SalvageDB Bot + - ADMIN_USER_ID=123456789 # Цены на услуги (в Telegram Stars) - - DECODE_PRICE=${DECODE_PRICE:-1} - - CHECK_PRICE=${CHECK_PRICE:-10} - - IMG_PRICE=${IMG_PRICE:-100} + - DECODE_PRICE=1 + - CHECK_PRICE=10 + - IMG_PRICE=100 # База данных Oracle - - db_user=${DB_USER} - - db_password=${DB_PASSWORD} - - db_dsn=${DB_DSN} + - db_user=your_db_user + - db_password=your_db_password + - db_dsn=localhost:1521/XEPDB1 # Настройки приложения - - DEBUG=${DEBUG:-0} + - DEBUG=0 - PYTHONUNBUFFERED=1 - - TZ=${TIMEZONE:-UTC} + - TZ=UTC # Монтируем volumes для логов и изображений volumes: