From 42cf39d0da80f142fb9574a0a29af0d33639bb48 Mon Sep 17 00:00:00 2001 From: gahusb Date: Tue, 19 May 2026 03:16:54 +0900 Subject: [PATCH] feat(music-lab): wire redis client + internal_router + compose env (SP-6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit main.py에 redis.asyncio client 추가 + internal_router include. docker-compose의 music-lab에 REDIS_URL/INTERNAL_API_KEY/MUSIC_RENDER_URL. SUNO_API_KEY 라인 제거 (spec §9 — Windows로 이전). Plan-B-Music Phase 1. Co-Authored-By: Claude Opus 4.7 (1M context) --- docker-compose.yml | 6 +++++- music-lab/app/main.py | 7 +++++++ music-lab/requirements.txt | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4b525f..ceed14d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,7 +62,6 @@ services: environment: - TZ=${TZ:-Asia/Seoul} - MUSIC_AI_SERVER_URL=${MUSIC_AI_SERVER_URL:-} - - SUNO_API_KEY=${SUNO_API_KEY:-} - MUSIC_MEDIA_BASE=${MUSIC_MEDIA_BASE:-/media/music} - CORS_ALLOW_ORIGINS=${CORS_ALLOW_ORIGINS:-http://localhost:3007,http://localhost:8080} - PEXELS_API_KEY=${PEXELS_API_KEY:-} @@ -77,9 +76,14 @@ services: - WINDOWS_VIDEO_ENCODER_URL=${WINDOWS_VIDEO_ENCODER_URL:-} - NAS_VIDEOS_ROOT=${NAS_VIDEOS_ROOT:-/volume1/docker/webpage/data/videos} - NAS_MUSIC_ROOT=${NAS_MUSIC_ROOT:-/volume1/docker/webpage/data/music} + - REDIS_URL=${REDIS_URL:-redis://redis:6379} + - INTERNAL_API_KEY=${INTERNAL_API_KEY:-} + - MUSIC_RENDER_URL=${MUSIC_RENDER_URL:-http://192.168.45.59:18711} volumes: - ${RUNTIME_PATH}/data/music:/app/data - ${RUNTIME_PATH:-.}/data/videos:/app/data/videos + depends_on: + - redis healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 60s diff --git a/music-lab/app/main.py b/music-lab/app/main.py index c38a521..9af2fc9 100644 --- a/music-lab/app/main.py +++ b/music-lab/app/main.py @@ -36,9 +36,16 @@ from .suno_provider import ( SUNO_API_KEY, SUNO_MODELS, ) from .batch_generator import run_batch as _run_batch +import redis.asyncio as aioredis +from .internal_router import router as internal_router app = FastAPI() +REDIS_URL = os.getenv("REDIS_URL", "redis://redis:6379") +redis_client = aioredis.from_url(REDIS_URL, decode_responses=False) + +app.include_router(internal_router) + _cors_origins = os.getenv("CORS_ALLOW_ORIGINS", "http://localhost:3007,http://localhost:8080").split(",") app.add_middleware( CORSMiddleware, diff --git a/music-lab/requirements.txt b/music-lab/requirements.txt index 974241a..7df1ec8 100644 --- a/music-lab/requirements.txt +++ b/music-lab/requirements.txt @@ -14,3 +14,4 @@ freezegun>=1.4 google-api-python-client>=2.100 google-auth-oauthlib>=1.2 google-auth-httplib2>=0.2 +redis>=5.0