update
This commit is contained in:
parent
34d39a8580
commit
c07ec3b2ec
|
|
@ -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/*
|
||||
|
||||
# Создание рабочей директории
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
106
requirements.txt
106
requirements.txt
|
|
@ -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
|
||||
Loading…
Reference in New Issue