update
This commit is contained in:
parent
34d39a8580
commit
c07ec3b2ec
|
|
@ -1,10 +1,13 @@
|
||||||
FROM python:3.11-slim
|
FROM python:3.11-slim
|
||||||
|
|
||||||
# Установка системных зависимостей
|
# Установка системных зависимостей для PostgreSQL и приложения
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
|
libpq-dev \
|
||||||
|
postgresql-client \
|
||||||
|
pkg-config \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Создание рабочей директории
|
# Создание рабочей директории
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,40 @@ async def lifespan(app: FastAPI):
|
||||||
try:
|
try:
|
||||||
await logger.ainfo("=== FastAPI Application Starting ===")
|
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 logger.ainfo("Initializing database connection...")
|
||||||
await db_manager.initialize()
|
await db_manager.initialize()
|
||||||
|
|
|
||||||
|
|
@ -9,15 +9,15 @@ services:
|
||||||
container_name: my-network-node
|
container_name: my-network-node
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "15100:15100"
|
- "8000:8000"
|
||||||
- "3000:15100" # Альтернативный порт для nginx
|
- "3000:8000" # Альтернативный порт для nginx
|
||||||
environment:
|
environment:
|
||||||
# Database
|
# Database - PostgreSQL для production
|
||||||
- DATABASE_URL=sqlite+aiosqlite:///app/data/my_network.db
|
- DATABASE_URL=postgresql+asyncpg://mynetwork:password@postgres:5432/mynetwork
|
||||||
|
|
||||||
# Application
|
# Application
|
||||||
- API_HOST=0.0.0.0
|
- API_HOST=0.0.0.0
|
||||||
- API_PORT=15100
|
- API_PORT=8000
|
||||||
- DEBUG=false
|
- DEBUG=false
|
||||||
- ENVIRONMENT=production
|
- ENVIRONMENT=production
|
||||||
|
|
||||||
|
|
@ -27,9 +27,9 @@ services:
|
||||||
|
|
||||||
# MY Network specific
|
# MY Network specific
|
||||||
- MY_NETWORK_MODE=main-node
|
- MY_NETWORK_MODE=main-node
|
||||||
- MY_NETWORK_PORT=15100
|
- MY_NETWORK_PORT=8000
|
||||||
- MY_NETWORK_HOST=0.0.0.0
|
- 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
|
||||||
- MONITORING_ENABLED=true
|
- MONITORING_ENABLED=true
|
||||||
|
|
@ -42,6 +42,9 @@ services:
|
||||||
# Cache (Redis optional)
|
# Cache (Redis optional)
|
||||||
- REDIS_ENABLED=false
|
- REDIS_ENABLED=false
|
||||||
- CACHE_ENABLED=false
|
- CACHE_ENABLED=false
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/app/data
|
- ./data:/app/data
|
||||||
- ./logs:/app/logs
|
- ./logs:/app/logs
|
||||||
|
|
@ -50,7 +53,7 @@ services:
|
||||||
- ./bootstrap.json:/app/bootstrap.json:ro
|
- ./bootstrap.json:/app/bootstrap.json:ro
|
||||||
- ./.env:/app/.env:ro
|
- ./.env:/app/.env:ro
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:15100/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -73,6 +76,12 @@ services:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "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:
|
networks:
|
||||||
- my-network
|
- my-network
|
||||||
profiles:
|
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
|
fastapi==0.104.1
|
||||||
uvicorn==0.24.0
|
uvicorn[standard]==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
|
|
||||||
python-multipart==0.0.6
|
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
|
pydub==0.25.1
|
||||||
|
|
||||||
# Email валидация для pydantic
|
# === Development & Testing ===
|
||||||
email-validator==2.1.0
|
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