refactor(A2): replace blender-renderer HTTP service with render-worker Celery container
- Create render-worker/ with Dockerfile (Ubuntu + cadquery + Blender via host mount) - Add render-worker/check_version.py: verifies Blender >= 5.0.1 at startup, Exit 1 on failure - Add render-worker/scripts/: blender_render.py, still_render.py, turntable_render.py - Create backend/app/services/render_blender.py: direct subprocess rendering - convert_step_to_stl() and export_per_part_stls() using cadquery - render_still(): STEP → STL → PNG via Blender subprocess - is_blender_available(): detects BLENDER_BIN env for render-worker context - Create backend/app/domains/rendering/tasks.py: render_still_task + render_turntable_task - Update step_processor.py: use subprocess path when BLENDER_BIN env is set (render-worker) - Update step_tasks.py: generate_stl_cache uses direct cadquery instead of HTTP - Remove blender-renderer and threejs-renderer from docker-compose.yml - Replace worker-thumbnail with render-worker (Ubuntu + cadquery + Blender mount) - Remove Docker SDK from backend Dockerfile (was only for flamenco scaling) - Update .env.example: BLENDER_VERSION=5.0.1 documented - Update celery_app.py: include domains.rendering.tasks in autodiscover Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+14
-38
@@ -49,7 +49,6 @@ services:
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
- uploads:/app/uploads
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- "8888:8888"
|
||||
depends_on:
|
||||
@@ -86,11 +85,12 @@ services:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
worker-thumbnail:
|
||||
render-worker:
|
||||
build:
|
||||
context: ./backend
|
||||
context: ./render-worker
|
||||
dockerfile: Dockerfile
|
||||
command: celery -A app.tasks.celery_app worker --loglevel=info -Q thumbnail_rendering --concurrency=1
|
||||
args:
|
||||
- BLENDER_VERSION=${BLENDER_VERSION:-5.0.1}
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-schaeffler}
|
||||
- POSTGRES_USER=${POSTGRES_USER:-schaeffler}
|
||||
@@ -99,19 +99,25 @@ services:
|
||||
- POSTGRES_PORT=5432
|
||||
- REDIS_URL=${REDIS_URL:-redis://redis:6379/0}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY:-changeme-in-production}
|
||||
- AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY:-}
|
||||
- AZURE_OPENAI_ENDPOINT=${AZURE_OPENAI_ENDPOINT:-}
|
||||
- AZURE_OPENAI_DEPLOYMENT=${AZURE_OPENAI_DEPLOYMENT:-gpt-4o}
|
||||
- AZURE_OPENAI_API_VERSION=${AZURE_OPENAI_API_VERSION:-2024-02-01}
|
||||
- UPLOAD_DIR=/app/uploads
|
||||
- BLENDER_BIN=/opt/blender/blender
|
||||
- RENDER_SCRIPTS_DIR=/render-scripts
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
- uploads:/app/uploads
|
||||
- /opt/blender:/opt/blender:ro
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu, compute, utility, graphics]
|
||||
|
||||
beat:
|
||||
build:
|
||||
@@ -140,36 +146,6 @@ services:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
blender-renderer:
|
||||
build:
|
||||
context: ./blender-renderer
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8100:8100"
|
||||
volumes:
|
||||
- uploads:/app/uploads
|
||||
- ./blender-renderer:/app
|
||||
- /opt/blender:/opt/blender:ro
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu, compute, utility, graphics]
|
||||
|
||||
threejs-renderer:
|
||||
build:
|
||||
context: ./threejs-renderer
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8101:8101"
|
||||
volumes:
|
||||
- uploads:/app/uploads
|
||||
- ./threejs-renderer:/app
|
||||
restart: unless-stopped
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
|
||||
Reference in New Issue
Block a user