major refactor

This commit is contained in:
2026-03-13 01:07:02 -03:00
parent eaaf2ad60c
commit 3eeedebb15
61 changed files with 441 additions and 242 deletions

View File

@@ -16,7 +16,7 @@ REDIS_URL=redis://redis:6379/0
# Django
DEBUG=1
DJANGO_SETTINGS_MODULE=mpr.settings
DJANGO_SETTINGS_MODULE=admin.mpr.settings
SECRET_KEY=change-this-in-production
# Worker

View File

@@ -1,9 +1,5 @@
FROM python:3.11-slim
RUN apt-get update && apt-get install -y \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
@@ -11,4 +7,4 @@ RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
CMD ["python", "admin/manage.py", "runserver", "0.0.0.0:8000"]

14
ctrl/Dockerfile.worker Normal file
View File

@@ -0,0 +1,14 @@
FROM python:3.11-slim
RUN apt-get update && apt-get install -y \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt requirements-worker.txt ./
RUN pip install --no-cache-dir -r requirements-worker.txt
COPY . .
CMD ["celery", "-A", "admin.mpr", "worker", "--loglevel=info"]

View File

@@ -1,7 +1,7 @@
x-common-env: &common-env
DATABASE_URL: postgresql://mpr_user:mpr_pass@postgres:5432/mpr
REDIS_URL: redis://redis:6379/0
DJANGO_SETTINGS_MODULE: mpr.settings
DJANGO_SETTINGS_MODULE: admin.mpr.settings
DEBUG: 1
GRPC_HOST: grpc
GRPC_PORT: 50051
@@ -96,9 +96,9 @@ services:
context: ..
dockerfile: ctrl/Dockerfile
command: >
bash -c "python manage.py migrate &&
python manage.py loadbuiltins || true &&
python manage.py runserver 0.0.0.0:8701"
bash -c "python admin/manage.py migrate &&
python admin/manage.py loadbuiltins || true &&
python admin/manage.py runserver 0.0.0.0:8701"
ports:
- "8701:8701"
environment:
@@ -115,11 +115,12 @@ services:
build:
context: ..
dockerfile: ctrl/Dockerfile
command: uvicorn api.main:app --host 0.0.0.0 --port 8702 --reload
command: uvicorn core.api.main:app --host 0.0.0.0 --port 8702 --reload
ports:
- "8702:8702"
environment:
<<: *common-env
DJANGO_ALLOW_ASYNC_UNSAFE: "true"
volumes:
- ..:/app
depends_on:
@@ -132,7 +133,7 @@ services:
build:
context: ..
dockerfile: ctrl/Dockerfile
command: python -m rpc.server
command: python -m core.rpc.server
ports:
- "50052:50051"
environment:
@@ -150,8 +151,8 @@ services:
celery:
build:
context: ..
dockerfile: ctrl/Dockerfile
command: celery -A mpr worker -l info -Q transcode -c 2
dockerfile: ctrl/Dockerfile.worker
command: celery -A admin.mpr worker -l info -Q transcode -c 2
environment:
<<: *common-env
MPR_EXECUTOR: local

View File

@@ -1,22 +1,22 @@
#!/bin/bash
# Model generation script for MPR
# Generates all targets from schema/modelgen.json config
# Generates all targets from core/schema/modelgen.json config
set -e
cd "$(dirname "$0")/.."
echo "Generating models from schema/models..."
python -m modelgen generate --config schema/modelgen.json
echo "Generating models from core/schema/models..."
python -m modelgen generate --config core/schema/modelgen.json
# Generate gRPC stubs from proto
echo "Generating gRPC stubs..."
python -m grpc_tools.protoc \
-I rpc/protos \
--python_out=rpc \
--grpc_python_out=rpc \
rpc/protos/worker.proto
-I core/rpc/protos \
--python_out=core/rpc \
--grpc_python_out=core/rpc \
core/rpc/protos/worker.proto
# Fix relative import in generated grpc stub
sed -i 's/^import worker_pb2/from . import worker_pb2/' rpc/worker_pb2_grpc.py
sed -i 's/^import worker_pb2/from . import worker_pb2/' core/rpc/worker_pb2_grpc.py
echo "Done!"

View File

@@ -14,8 +14,8 @@ COPY ctrl/lambda/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY task/lambda_handler.py ${LAMBDA_TASK_ROOT}/task/lambda_handler.py
COPY task/__init__.py ${LAMBDA_TASK_ROOT}/task/__init__.py
COPY core/task/lambda_handler.py ${LAMBDA_TASK_ROOT}/core/task/lambda_handler.py
COPY core/task/__init__.py ${LAMBDA_TASK_ROOT}/core/task/__init__.py
COPY core/ ${LAMBDA_TASK_ROOT}/core/
CMD ["task.lambda_handler.handler"]
CMD ["core.task.lambda_handler.handler"]

View File

@@ -44,9 +44,9 @@ http {
proxy_set_header Host $host;
}
# FastAPI
# FastAPI — trailing slash strips /api prefix before forwarding
location /api/ {
proxy_pass http://fastapi;
proxy_pass http://fastapi/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;