feat(A4): add MinIO service + storage abstraction (core/storage.py)
- Add MinIO service to docker-compose.yml (port 9000 API, 9001 console) - Add minio-data volume for persistent object storage - Create backend/app/core/storage.py: MinIOStorage + LocalStorage abstraction - MinIOStorage: boto3-based, auto-creates bucket, upload/download/exists/delete/presign - LocalStorage: fallback for dev (UPLOAD_DIR filesystem, backward compat) - get_storage() singleton: auto-selects based on MINIO_URL env var - Add MINIO_URL/USER/PASSWORD/BUCKET env vars to all service definitions - backend/pyproject.toml: docker>=6.1.0 → boto3>=1.34.0 - Add docker-compose.worker.yml: external render-worker for remote machines - Fix .gitignore: 'core' rule was too broad, now only matches root /core dump - Update .env.example: MinIO connection vars documented Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,14 @@ MAX_UPLOAD_SIZE_MB=500
|
||||
# Scale horizontally with: docker compose up --scale worker=N
|
||||
CELERY_WORKER_CONCURRENCY=8
|
||||
|
||||
# MinIO (S3-compatible object storage for shared uploads)
|
||||
# MinIO is started automatically via docker-compose.yml
|
||||
MINIO_URL=http://minio:9000
|
||||
MINIO_USER=minioadmin
|
||||
MINIO_PASSWORD=minioadmin
|
||||
MINIO_BUCKET=uploads
|
||||
# MinIO console UI: http://localhost:9001 (user: minioadmin, password: minioadmin)
|
||||
|
||||
# Blender (render-worker)
|
||||
# Blender >= 5.0.1 must be installed on the host at /opt/blender
|
||||
# The render-worker container mounts it read-only via volumes: - /opt/blender:/opt/blender:ro
|
||||
|
||||
Reference in New Issue
Block a user