Обновлен файл docker-compose.yml с заменой переменных окружения на значения по умолчанию для упрощения настройки. Исправлены ссылки на переменные в Makefile для соответствия новым именам. Обновлена документация в README_DOCKER.md для отражения изменений в конфигурации и обязательных значений. Эти изменения улучшают удобство настройки и документацию проекта.

This commit is contained in:
Vlad 2025-06-04 08:07:29 +03:00
parent c0a8cf1334
commit 3e1a090fc8
3 changed files with 69 additions and 46 deletions

View File

@ -66,7 +66,7 @@ test-env: ## Проверить переменные окружения
test-db: ## Тестировать подключение к БД test-db: ## Тестировать подключение к БД
@echo "🗄️ Testing database connection..." @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: ## Проверить импорты бота test-bot: ## Проверить импорты бота
@echo "🤖 Testing bot imports..." @echo "🤖 Testing bot imports..."
@ -91,9 +91,9 @@ backup-logs: ## Создать архив логов
@echo "💾 Creating logs backup..." @echo "💾 Creating logs backup..."
tar -czf logs_backup_$(shell date +%Y%m%d_%H%M%S).tar.gz logs/ tar -czf logs_backup_$(shell date +%Y%m%d_%H%M%S).tar.gz logs/
backup-env: ## Создать бэкап переменных окружения backup-config: ## Создать бэкап конфигурации
@echo "🔐 Creating environment backup..." @echo "🔐 Creating configuration backup..."
cp .env .env.backup.$(shell date +%Y%m%d_%H%M%S) cp docker-compose.yml docker-compose.yml.backup.$(shell date +%Y%m%d_%H%M%S)
# Деплой # Деплой
deploy: build up ## Полный деплой (сборка + запуск) deploy: build up ## Полный деплой (сборка + запуск)
@ -132,17 +132,28 @@ update: ## Обновить код и перезапустить
# Конфигурация # Конфигурация
setup: ## Первоначальная настройка setup: ## Первоначальная настройка
@echo "⚙️ Initial 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..." @echo "📁 Creating directories..."
mkdir -p logs images data mkdir -p logs images data
chmod 755 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 .DEFAULT_GOAL := help

View File

@ -11,19 +11,27 @@
## 🚀 Быстрый старт ## 🚀 Быстрый старт
### 1. Подготовка переменных окружения ### 1. Настройка конфигурации
Скопируйте файл с примером и настройте переменные: Отредактируйте файл `docker-compose.yml` и замените значения по умолчанию на ваши:
```bash ```yaml
cp env.example .env environment:
nano .env # 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 - `BOT_TOKEN` - токен от @BotFather
- `DB_USER`, `DB_PASSWORD`, `DB_DSN` - настройки Oracle DB
- `ADMIN_USER_ID` - ваш Telegram ID для админ-функций - `ADMIN_USER_ID` - ваш Telegram ID для админ-функций
- `db_user`, `db_password`, `db_dsn` - настройки Oracle DB
### 2. Создание необходимых директорий ### 2. Создание необходимых директорий
@ -31,7 +39,7 @@ nano .env
# Создаем директории для данных # Создаем директории для данных
mkdir -p logs images data mkdir -p logs images data
# Устанавливаем права доступа # Устанавливаем права доступа (Linux/macOS)
chmod 755 logs images data chmod 755 logs images data
``` ```
@ -53,10 +61,10 @@ docker-compose logs -f salvagedb-bot
``` ```
salvagedb_bot/ salvagedb_bot/
├── Dockerfile # Конфигурация Docker образа ├── Dockerfile # Конфигурация Docker образа
├── docker-compose.yml # Orchestration конфигурация ├── docker-compose.yml # Orchestration конфигурация (содержит все настройки)
├── docker-entrypoint.sh # Скрипт инициализации ├── docker-entrypoint.sh # Скрипт инициализации
├── .dockerignore # Исключения для Docker ├── .dockerignore # Исключения для Docker
├── env.example # Пример переменных окружения ├── env.example # Пример переменных (справочно)
├── requirements.txt # Python зависимости ├── requirements.txt # Python зависимости
├── main.py # Основной код бота ├── main.py # Основной код бота
├── db.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` | | `BOT_NAME` | Имя бота | `SalvageDB Bot` |
| `ADMIN_USER_ID` | ID администратора | **Обязательно** | | `ADMIN_USER_ID` | ID администратора | `123456789` ⚠️ |
| `DECODE_PRICE` | Цена декодирования VIN | `1` | | `DECODE_PRICE` | Цена декодирования VIN | `1` |
| `CHECK_PRICE` | Цена проверки повреждений | `10` | | `CHECK_PRICE` | Цена проверки повреждений | `10` |
| `IMG_PRICE` | Цена доступа к фото | `100` | | `IMG_PRICE` | Цена доступа к фото | `100` |
| `DB_USER` | Пользователь Oracle DB | **Обязательно** | | `db_user` | Пользователь Oracle DB | `your_db_user` ⚠️ |
| `DB_PASSWORD` | Пароль Oracle DB | **Обязательно** | | `db_password` | Пароль Oracle DB | `your_db_password` ⚠️ |
| `DB_DSN` | DSN строка Oracle DB | **Обязательно** | | `db_dsn` | DSN строка Oracle DB | `localhost:1521/XEPDB1` ⚠️ |
| `DEBUG` | Режим отладки | `0` | | `DEBUG` | Режим отладки | `0` |
| `TIMEZONE` | Часовой пояс | `UTC` | | `TZ` | Часовой пояс | `UTC` |
**⚠️ Обязательно замените** отмеченные значения на реальные!
### Volumes ### Volumes
@ -150,7 +162,7 @@ docker inspect salvagedb-telegram-bot
### Рекомендации ### Рекомендации
1. **Переменные окружения:** 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 " docker-compose exec salvagedb-bot python -c "
import oracledb import oracledb
import os 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!') print('Connection successful!')
conn.close() conn.close()
" "
@ -190,14 +202,14 @@ print('Bot token length:', len(os.getenv('BOT_TOKEN', '')))
" "
# Проверка aiogram # Проверка 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 ```bash
# Включить DEBUG режим # Включить DEBUG режим (отредактировать docker-compose.yml)
echo "DEBUG=1" >> .env # Изменить: DEBUG=1
docker-compose restart docker-compose restart
# Просмотр подробных логов # Просмотр подробных логов
@ -225,7 +237,7 @@ docker-compose logs -f salvagedb-bot
При возникновении проблем: При возникновении проблем:
1. Проверьте логи: `docker-compose logs salvagedb-bot` 1. Проверьте логи: `docker-compose logs salvagedb-bot`
2. Убедитесь в правильности переменных окружения 2. Убедитесь в правильности переменных в docker-compose.yml
3. Проверьте подключение к Oracle DB 3. Проверьте подключение к Oracle DB
4. Проверьте валидность токена бота 4. Проверьте валидность токена бота

View File

@ -11,24 +11,24 @@ services:
# Переменные окружения # Переменные окружения
environment: environment:
# Telegram Bot настройки # Telegram Bot настройки
- BOT_TOKEN=${BOT_TOKEN} - BOT_TOKEN=your_bot_token_here
- BOT_NAME=${BOT_NAME:-SalvageDB Bot} - BOT_NAME=SalvageDB Bot
- ADMIN_USER_ID=${ADMIN_USER_ID} - ADMIN_USER_ID=123456789
# Цены на услуги (в Telegram Stars) # Цены на услуги (в Telegram Stars)
- DECODE_PRICE=${DECODE_PRICE:-1} - DECODE_PRICE=1
- CHECK_PRICE=${CHECK_PRICE:-10} - CHECK_PRICE=10
- IMG_PRICE=${IMG_PRICE:-100} - IMG_PRICE=100
# База данных Oracle # База данных Oracle
- db_user=${DB_USER} - db_user=your_db_user
- db_password=${DB_PASSWORD} - db_password=your_db_password
- db_dsn=${DB_DSN} - db_dsn=localhost:1521/XEPDB1
# Настройки приложения # Настройки приложения
- DEBUG=${DEBUG:-0} - DEBUG=0
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
- TZ=${TIMEZONE:-UTC} - TZ=UTC
# Монтируем volumes для логов и изображений # Монтируем volumes для логов и изображений
volumes: volumes: