From 5844567048d8a20b49dd902030881ad28c6a8c58 Mon Sep 17 00:00:00 2001 From: gahusb Date: Wed, 6 May 2026 01:40:07 +0900 Subject: [PATCH] =?UTF-8?q?fix(packs-lab):=20PACK=5FBASE=5FDIR=EC=9D=84=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=EB=B3=80=EC=88=98=EB=A1=9C=20=E2=80=94=20?= =?UTF-8?q?=EC=BB=A8=ED=85=8C=EC=9D=B4=EB=84=88=20=EB=A7=88=EC=9A=B4?= =?UTF-8?q?=ED=8A=B8=20=EA=B2=BD=EB=A1=9C=EC=99=80=20routes=20=EC=A0=95?= =?UTF-8?q?=ED=95=A9=EC=84=B1=20=ED=99=95=EB=B3=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이전 docker-compose는 컨테이너 내부 /app/data/packs로 마운트하지만 routes.py는 /volume1/docker/webpage/media/packs를 하드코딩하고 있어 mismatch였다. - routes.py: PACK_BASE_DIR = Path(os.getenv("PACK_BASE_DIR", "/app/data/packs")) - docker-compose: PACK_BASE_DIR env 추가 + volume 마운트가 같은 경로 사용 - .env.example: PACK_BASE_DIR 신규 명시 (마운트 경로와 반드시 일치 안내) --- .env.example | 5 ++++- docker-compose.yml | 3 ++- packs-lab/app/routes.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 388866b..6c10111 100644 --- a/.env.example +++ b/.env.example @@ -110,5 +110,8 @@ SUPABASE_SERVICE_KEY= # admin upload 토큰 TTL (초). default 1800 = 30분 UPLOAD_TOKEN_TTL_SEC=1800 -# 로컬 개발: ./data/packs / NAS 운영: /volume1/docker/webpage/media/packs +# 호스트 마운트 경로 (로컬 ./data/packs, NAS /volume1/docker/webpage/media/packs) PACK_DATA_PATH=./data/packs + +# 컨테이너 내부 PACK_BASE_DIR (routes.py가 파일 저장 시 사용. docker-compose volume의 컨테이너 측 경로와 반드시 일치) +PACK_BASE_DIR=/app/data/packs diff --git a/docker-compose.yml b/docker-compose.yml index 708c2d9..260830d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -191,8 +191,9 @@ services: - SUPABASE_URL=${SUPABASE_URL:-} - SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY:-} - UPLOAD_TOKEN_TTL_SEC=${UPLOAD_TOKEN_TTL_SEC:-1800} + - PACK_BASE_DIR=${PACK_BASE_DIR:-/app/data/packs} volumes: - - ${PACK_DATA_PATH:-./data/packs}:/app/data/packs + - ${PACK_DATA_PATH:-./data/packs}:${PACK_BASE_DIR:-/app/data/packs} healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 30s diff --git a/packs-lab/app/routes.py b/packs-lab/app/routes.py index 65cacbf..dd52bd2 100644 --- a/packs-lab/app/routes.py +++ b/packs-lab/app/routes.py @@ -31,7 +31,7 @@ from .models import ( logger = logging.getLogger("packs-lab.routes") router = APIRouter(prefix="/api/packs") -PACK_BASE_DIR = Path("/volume1/docker/webpage/media/packs") +PACK_BASE_DIR = Path(os.getenv("PACK_BASE_DIR", "/app/data/packs")) ALLOWED_EXT = {"pdf", "zip", "mp4", "mov", "mkv", "wav", "m4a", "mp3", "png", "jpg", "jpeg", "webp", "prj"} MAX_BYTES = 5 * 1024 * 1024 * 1024 # 5GB SAFE_FILENAME = re.compile(r"^[\w가-힣\-\.\(\)\s]+$")