diff --git a/services/music-render/.env.example b/services/music-render/.env.example new file mode 100644 index 0000000..ac9cfca --- /dev/null +++ b/services/music-render/.env.example @@ -0,0 +1,20 @@ +# Plan-B-Music — Windows music-render worker + +# NAS Redis 큐 +REDIS_URL=redis://192.168.45.54:6379 + +# NAS internal webhook +NAS_BASE_URL=http://192.168.45.54:18600 +INTERNAL_API_KEY=__copy_from_nas_dotenv__ + +# Suno API (sunoapi.org 래퍼) — NAS .env에서 옮겨옴 +SUNO_API_KEY=__paste_suno_key_here__ + +# MusicGen 호스트 (Windows native Python — 박재오 PC localhost) +MUSIC_AI_SERVER_URL=http://host.docker.internal:8765 + +# NAS SMB mount 안의 음악 디렉토리 +MUSIC_MEDIA_ROOT=/mnt/nas/webpage/data/music + +# nginx 서빙 prefix (NAS webhook payload용) +MUSIC_MEDIA_URL_PREFIX=/media/music diff --git a/services/music-render/Dockerfile b/services/music-render/Dockerfile new file mode 100644 index 0000000..d643423 --- /dev/null +++ b/services/music-render/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.12-slim-bookworm +ENV PYTHONUNBUFFERED=1 + +WORKDIR /app + +# requests SSL 의존성만 필요 (Chromium 불필요) +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +COPY requirements.txt . +RUN pip install --no-cache-dir --timeout 600 --retries 5 -r requirements.txt + +COPY . . + +EXPOSE 8000 +CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"] diff --git a/services/music-render/requirements.txt b/services/music-render/requirements.txt new file mode 100644 index 0000000..ee0614a --- /dev/null +++ b/services/music-render/requirements.txt @@ -0,0 +1,9 @@ +fastapi==0.115.6 +uvicorn[standard]==0.34.0 +requests==2.32.3 +redis>=5.0 +httpx>=0.27 +mutagen==1.47.0 +pytest>=8.0 +pytest-asyncio>=0.24 +respx>=0.21