Добавлена возможность запуска только БД для локальной разработки
Создано: - 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:
@@ -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
|
||||
|
||||
49
Makefile
49
Makefile
@@ -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
|
||||
|
||||
52
README.md
52
README.md
@@ -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
26
docker-compose.dev.yml
Normal 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:
|
||||
Reference in New Issue
Block a user