Добавлена возможность запуска только БД для локальной разработки
Создано: - 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
|
||||||
OPENAI_API_KEY=your_openai_api_key_here
|
OPENAI_API_KEY=your_openai_api_key_here
|
||||||
|
|
||||||
# Database (для локального запуска)
|
# Database (для локального запуска с БД в Docker)
|
||||||
DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:5432/language_bot
|
DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot
|
||||||
|
|
||||||
# PostgreSQL настройки (для Docker)
|
# PostgreSQL настройки (для Docker)
|
||||||
POSTGRES_USER=botuser
|
POSTGRES_USER=botuser
|
||||||
POSTGRES_PASSWORD=botpassword
|
POSTGRES_PASSWORD=botpassword
|
||||||
POSTGRES_DB=language_bot
|
POSTGRES_DB=language_bot
|
||||||
|
DB_PORT=15433
|
||||||
|
|
||||||
# Settings
|
# Settings
|
||||||
DEBUG=True
|
DEBUG=True
|
||||||
|
|||||||
39
Makefile
39
Makefile
@@ -1,4 +1,4 @@
|
|||||||
.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:
|
help:
|
||||||
@echo "Доступные команды:"
|
@echo "Доступные команды:"
|
||||||
@@ -6,9 +6,16 @@ help:
|
|||||||
@echo " make install - Установить зависимости"
|
@echo " make install - Установить зависимости"
|
||||||
@echo " make run - Запустить бота локально"
|
@echo " make run - Запустить бота локально"
|
||||||
@echo " make clean - Удалить venv и кэш"
|
@echo " make clean - Удалить venv и кэш"
|
||||||
@echo " make docker-up - Запустить через Docker Compose"
|
@echo ""
|
||||||
@echo " make docker-down - Остановить Docker контейнеры"
|
@echo "Docker команды:"
|
||||||
|
@echo " make docker-up - Запустить всё (бот + БД)"
|
||||||
|
@echo " make docker-down - Остановить все контейнеры"
|
||||||
@echo " make docker-logs - Показать логи Docker"
|
@echo " make docker-logs - Показать логи Docker"
|
||||||
|
@echo " make docker-rebuild - Пересобрать контейнеры"
|
||||||
|
@echo ""
|
||||||
|
@echo "База данных:"
|
||||||
|
@echo " make docker-db - Запустить только БД (для локальной разработки)"
|
||||||
|
@echo " make docker-db-stop - Остановить БД"
|
||||||
|
|
||||||
venv:
|
venv:
|
||||||
python3 -m venv .venv
|
python3 -m venv .venv
|
||||||
@@ -50,3 +57,29 @@ docker-logs:
|
|||||||
|
|
||||||
docker-rebuild:
|
docker-rebuild:
|
||||||
docker-compose up -d --build
|
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)
|
- Telegram Bot Token: создайте бота через [@BotFather](https://t.me/BotFather)
|
||||||
- OpenAI API Key: получите на [platform.openai.com](https://platform.openai.com/api-keys)
|
- OpenAI API Key: получите на [platform.openai.com](https://platform.openai.com/api-keys)
|
||||||
|
|
||||||
### 4. Настройка базы данных
|
**5. Настройка базы данных**
|
||||||
|
|
||||||
Создайте PostgreSQL базу данных:
|
Запустите PostgreSQL через Docker (рекомендуется):
|
||||||
|
|
||||||
```bash
|
```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
|
createdb language_bot
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
sudo apt install postgresql
|
||||||
|
sudo -u postgres createdb language_bot
|
||||||
```
|
```
|
||||||
|
|
||||||
Или используйте Docker:
|
**6. Запуск бота**
|
||||||
|
|
||||||
```bash
|
```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
|
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