fix(packs-lab): PACK_BASE_DIR을 환경변수로 — 컨테이너 마운트 경로와 routes 정합성 확보
이전 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 신규 명시 (마운트 경로와 반드시 일치 안내)
This commit is contained in:
@@ -110,5 +110,8 @@ SUPABASE_SERVICE_KEY=
|
|||||||
# admin upload 토큰 TTL (초). default 1800 = 30분
|
# admin upload 토큰 TTL (초). default 1800 = 30분
|
||||||
UPLOAD_TOKEN_TTL_SEC=1800
|
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_DATA_PATH=./data/packs
|
||||||
|
|
||||||
|
# 컨테이너 내부 PACK_BASE_DIR (routes.py가 파일 저장 시 사용. docker-compose volume의 컨테이너 측 경로와 반드시 일치)
|
||||||
|
PACK_BASE_DIR=/app/data/packs
|
||||||
|
|||||||
@@ -191,8 +191,9 @@ services:
|
|||||||
- SUPABASE_URL=${SUPABASE_URL:-}
|
- SUPABASE_URL=${SUPABASE_URL:-}
|
||||||
- SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY:-}
|
- SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY:-}
|
||||||
- UPLOAD_TOKEN_TTL_SEC=${UPLOAD_TOKEN_TTL_SEC:-1800}
|
- UPLOAD_TOKEN_TTL_SEC=${UPLOAD_TOKEN_TTL_SEC:-1800}
|
||||||
|
- PACK_BASE_DIR=${PACK_BASE_DIR:-/app/data/packs}
|
||||||
volumes:
|
volumes:
|
||||||
- ${PACK_DATA_PATH:-./data/packs}:/app/data/packs
|
- ${PACK_DATA_PATH:-./data/packs}:${PACK_BASE_DIR:-/app/data/packs}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ from .models import (
|
|||||||
logger = logging.getLogger("packs-lab.routes")
|
logger = logging.getLogger("packs-lab.routes")
|
||||||
router = APIRouter(prefix="/api/packs")
|
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"}
|
ALLOWED_EXT = {"pdf", "zip", "mp4", "mov", "mkv", "wav", "m4a", "mp3", "png", "jpg", "jpeg", "webp", "prj"}
|
||||||
MAX_BYTES = 5 * 1024 * 1024 * 1024 # 5GB
|
MAX_BYTES = 5 * 1024 * 1024 * 1024 # 5GB
|
||||||
SAFE_FILENAME = re.compile(r"^[\w가-힣\-\.\(\)\s]+$")
|
SAFE_FILENAME = re.compile(r"^[\w가-힣\-\.\(\)\s]+$")
|
||||||
|
|||||||
Reference in New Issue
Block a user