Добавлена возможность запуска только БД для локальной разработки

Создано:
- docker-compose.dev.yml - конфигурация только для PostgreSQL
- make docker-db - команда для запуска только БД на порту 15433
- make docker-db-stop - остановка БД

Изменено:
- Makefile - добавлены команды для работы с БД
- README.md - инструкции по запуску БД
- .env.example - обновлен порт БД на 15433

Использование:
make docker-db - запустить PostgreSQL на localhost:15433
make run - запустить бота локально с подключением к БД

Порт 15433 выбран чтобы избежать конфликтов с другими PostgreSQL.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-04 11:55:51 +03:00
parent 253f557bd1
commit 6e735a2eab
4 changed files with 114 additions and 18 deletions

View File

@@ -4,13 +4,14 @@ BOT_TOKEN=your_telegram_bot_token_here
# OpenAI API Key
OPENAI_API_KEY=your_openai_api_key_here
# Database (для локального запуска)
DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:5432/language_bot
# Database (для локального запуска с БД в Docker)
DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot
# PostgreSQL настройки (для Docker)
POSTGRES_USER=botuser
POSTGRES_PASSWORD=botpassword
POSTGRES_DB=language_bot
DB_PORT=15433
# Settings
DEBUG=True

View File

@@ -1,14 +1,21 @@
.PHONY: help venv install run clean docker-up docker-down docker-logs
.PHONY: help venv install run clean docker-up docker-down docker-logs docker-db docker-db-stop
help:
@echo "Доступные команды:"
@echo " make venv - Создать виртуальное окружение"
@echo " make install - Установить зависимости"
@echo " make run - Запустить бота локально"
@echo " make clean - Удалить venv и кэш"
@echo " make docker-up - Запустить через Docker Compose"
@echo " make docker-down - Остановить Docker контейнеры"
@echo " make docker-logs - Показать логи Docker"
@echo " make venv - Создать виртуальное окружение"
@echo " make install - Установить зависимости"
@echo " make run - Запустить бота локально"
@echo " make clean - Удалить venv и кэш"
@echo ""
@echo "Docker команды:"
@echo " make docker-up - Запустить всё (бот + БД)"
@echo " make docker-down - Остановить все контейнеры"
@echo " make docker-logs - Показать логи Docker"
@echo " make docker-rebuild - Пересобрать контейнеры"
@echo ""
@echo "База данных:"
@echo " make docker-db - Запустить только БД (для локальной разработки)"
@echo " make docker-db-stop - Остановить БД"
venv:
python3 -m venv .venv
@@ -50,3 +57,29 @@ docker-logs:
docker-rebuild:
docker-compose up -d --build
docker-db:
@echo "🐘 Запуск PostgreSQL для локальной разработки..."
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "⚠️ Создан .env файл из .env.example"; \
fi
docker-compose -f docker-compose.dev.yml up -d
@echo "✅ База данных запущена на localhost:15433"
@echo ""
@echo "Параметры подключения:"
@echo " Host: localhost"
@echo " Port: 15433"
@echo " User: botuser"
@echo " Password: botpassword"
@echo " Database: language_bot"
@echo ""
@echo "DATABASE_URL для .env:"
@echo " DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot"
@echo ""
@echo "Подключиться: docker-compose -f docker-compose.dev.yml exec db psql -U botuser -d language_bot"
docker-db-stop:
@echo "Остановка базы данных..."
docker-compose -f docker-compose.dev.yml stop
docker-compose -f docker-compose.dev.yml down

View File

@@ -121,24 +121,60 @@ DEBUG=True
- Telegram Bot Token: создайте бота через [@BotFather](https://t.me/BotFather)
- OpenAI API Key: получите на [platform.openai.com](https://platform.openai.com/api-keys)
### 4. Настройка базы данных
**5. Настройка базы данных**
Создайте PostgreSQL базу данных:
Запустите PostgreSQL через Docker (рекомендуется):
```bash
# Через Makefile (рекомендуется)
make docker-db
# Или напрямую через docker-compose
docker-compose up -d db
# Или через отдельный dev-compose
docker-compose -f docker-compose.dev.yml up -d
```
Параметры подключения:
- Host: `localhost`
- Port: `15433` (не конфликтует с другими PostgreSQL)
- User: `botuser`
- Password: `botpassword`
- Database: `language_bot`
- URL: `postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot`
Или установите PostgreSQL локально:
```bash
# macOS
brew install postgresql
createdb language_bot
# Linux
sudo apt install postgresql
sudo -u postgres createdb language_bot
```
Или используйте Docker:
**6. Запуск бота**
```bash
docker run --name language-bot-db -e POSTGRES_PASSWORD=password -e POSTGRES_DB=language_bot -p 5432:5432 -d postgres:15
```
# Активировать venv
source .venv/bin/activate
### 5. Запуск бота
```bash
# Запустить
python main.py
# Или через Makefile
make run
```
**Остановка БД:**
```bash
make docker-db-stop
# или
docker-compose stop db
```
## Структура проекта

26
docker-compose.dev.yml Normal file
View File

@@ -0,0 +1,26 @@
version: '3.8'
# Конфигурация только для базы данных (локальная разработка)
# Использование: docker-compose -f docker-compose.dev.yml up -d
services:
db:
image: postgres:15-alpine
container_name: language_bot_db_dev
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-botuser}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-botpassword}
POSTGRES_DB: ${POSTGRES_DB:-language_bot}
volumes:
- postgres_data_dev:/var/lib/postgresql/data
ports:
- "${DB_PORT:-15433}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-botuser}"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data_dev: