This commit is contained in:
user 2025-07-28 08:46:32 +03:00
parent 34d39a8580
commit c07ec3b2ec
4 changed files with 130 additions and 40 deletions

View File

@ -1,10 +1,13 @@
FROM python:3.11-slim
# Установка системных зависимостей
# Установка системных зависимостей для PostgreSQL и приложения
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
libpq-dev \
postgresql-client \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Создание рабочей директории

View File

@ -55,6 +55,40 @@ async def lifespan(app: FastAPI):
try:
await logger.ainfo("=== FastAPI Application Starting ===")
# === DEBUG: PostgreSQL DRIVERS VALIDATION ===
await logger.ainfo("=== DEBUGGING psycopg2 ERROR ===")
# Проверка psycopg2
try:
import psycopg2
await logger.ainfo("✅ psycopg2 импортирован успешно", version=psycopg2.__version__)
except ImportError as e:
await logger.aerror("❌ ОШИБКА: psycopg2 не найден", error=str(e))
except Exception as e:
await logger.aerror("❌ ОШИБКА: psycopg2 другая ошибка", error=str(e))
# Проверка asyncpg
try:
import asyncpg
await logger.ainfo("✅ asyncpg импортирован успешно", version=asyncpg.__version__)
except ImportError as e:
await logger.aerror("❌ ОШИБКА: asyncpg не найден", error=str(e))
except Exception as e:
await logger.aerror("❌ ОШИБКА: asyncpg другая ошибка", error=str(e))
# Проверка SQLAlchemy драйверов
try:
from sqlalchemy.dialects import postgresql
await logger.ainfo("✅ SQLAlchemy PostgreSQL диалект доступен")
except ImportError as e:
await logger.aerror("❌ ОШИБКА: SQLAlchemy PostgreSQL диалект недоступен", error=str(e))
# Проверка DATABASE_URL
from app.core.config import DATABASE_URL
await logger.ainfo("🔧 DATABASE_URL конфигурация", url=DATABASE_URL)
await logger.ainfo("=== END DEBUGGING ===")
# Инициализация базы данных
await logger.ainfo("Initializing database connection...")
await db_manager.initialize()

View File

@ -9,15 +9,15 @@ services:
container_name: my-network-node
restart: unless-stopped
ports:
- "15100:15100"
- "3000:15100" # Альтернативный порт для nginx
- "8000:8000"
- "3000:8000" # Альтернативный порт для nginx
environment:
# Database
- DATABASE_URL=sqlite+aiosqlite:///app/data/my_network.db
# Database - PostgreSQL для production
- DATABASE_URL=postgresql+asyncpg://mynetwork:password@postgres:5432/mynetwork
# Application
- API_HOST=0.0.0.0
- API_PORT=15100
- API_PORT=8000
- DEBUG=false
- ENVIRONMENT=production
@ -27,9 +27,9 @@ services:
# MY Network specific
- MY_NETWORK_MODE=main-node
- MY_NETWORK_PORT=15100
- MY_NETWORK_PORT=8000
- MY_NETWORK_HOST=0.0.0.0
- BOOTSTRAP_NODE=my-public-node-3.projscale.dev:15100
- BOOTSTRAP_NODE=my-public-node-3.projscale.dev:8000
# Monitoring
- MONITORING_ENABLED=true
@ -42,6 +42,9 @@ services:
# Cache (Redis optional)
- REDIS_ENABLED=false
- CACHE_ENABLED=false
depends_on:
postgres:
condition: service_healthy
volumes:
- ./data:/app/data
- ./logs:/app/logs
@ -50,7 +53,7 @@ services:
- ./bootstrap.json:/app/bootstrap.json:ro
- ./.env:/app/.env:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:15100/health"]
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
@ -73,6 +76,12 @@ services:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-mynetwork} -d ${POSTGRES_DB:-mynetwork}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- my-network
profiles:

View File

@ -1,36 +1,80 @@
# Минимальные зависимости для MY Network v2.0
# FastAPI Migration Requirements - MY Network v3.0
# Полная миграция от Sanic к FastAPI с совместимостью
# === Core FastAPI Stack ===
fastapi==0.104.1
uvicorn==0.24.0
sanic==23.12.1
python-dotenv==1.0.0
httpx==0.25.0
aiofiles==23.2.1
pydantic==2.5.2
pydantic-settings==2.1.0
# База данных (optional)
sqlalchemy==2.0.23
asyncpg==0.29.0
alembic==1.13.1
# Для безопасности
pyjwt==2.8.0
bcrypt==4.1.2
cryptography==43.0.3
# Кэш (optional)
redis==5.0.1
# Утилиты
structlog==23.2.0
psutil==5.9.6
# Мониторинг и WebSocket
websockets==12.0
uvicorn[standard]==0.24.0
python-multipart==0.0.6
# Аудио обработка
# === Authentication & Security ===
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
python-jwt==4.0.0
pyjwt==2.8.0
bcrypt==4.1.2
# === Database & ORM ===
sqlalchemy==2.0.23
alembic==1.12.1
asyncpg==0.29.0
psycopg2-binary==2.9.9
# === Caching & Redis ===
redis==5.0.1
aioredis==2.0.1
# === Cryptography ===
cryptography==41.0.7
ed25519==1.5
pynacl==1.5.0
PyNaCl==1.5.0
base58==2.1.1
# === HTTP & API ===
httpx==0.25.2
aiohttp==3.9.0
requests==2.31.0
# === Data Processing ===
pydantic==2.5.0
pydantic-settings==2.1.0
# === Validation & Parsing ===
email-validator==2.1.0
python-dateutil==2.8.2
# === File Handling ===
python-magic==0.4.27
pillow==10.1.0
aiofiles==23.2.1
# === Monitoring & Logging ===
structlog==23.2.0
psutil==5.9.6
prometheus-client==0.19.0
# === WebSocket Support ===
websockets==12.0
# === Audio Processing ===
pydub==0.25.1
# Email валидация для pydantic
email-validator==2.1.0
# === Development & Testing ===
pytest==7.4.3
pytest-asyncio==0.21.1
pytest-cov==4.1.0
black==23.11.0
isort==5.12.0
flake8==6.1.0
# === Environment & Configuration ===
python-dotenv==1.0.0
pyyaml==6.0.1
# === Compatibility Libraries ===
typing-extensions==4.8.0
starlette==0.27.0
# === Optional: Production Deployment ===
# uvloop==0.19.0 # Для лучшей производительности (разкомментировать в production)
# gunicorn==21.2.0 # Для production deployment