diff --git a/.env.development.example b/.env.development.example index 96a51dd..93f5ef2 100644 --- a/.env.development.example +++ b/.env.development.example @@ -38,6 +38,13 @@ REDIS_IMAGE=redis:7-alpine REDIS_PASSWORD=change-me-redis-password REDIS_DATA_DIR=./data/redis +# ========================================== +# 업로드(업무 첨부) +# ========================================== +# UPLOAD_DATA_DIR: 업무 첨부 파일 보관 경로(호스트). 컨테이너의 /app/uploads 에 마운트된다. +# 볼륨이 없으면 재배포 시 첨부 파일이 유실된다. +UPLOAD_DATA_DIR=./data/uploads + # ========================================== # API 경로 # ========================================== diff --git a/.env.production.example b/.env.production.example index bf70068..5ebfa96 100644 --- a/.env.production.example +++ b/.env.production.example @@ -38,6 +38,13 @@ REDIS_IMAGE=redis:7-alpine REDIS_PASSWORD=change-me-redis-password REDIS_DATA_DIR=./data/redis +# ========================================== +# 업로드(업무 첨부) +# ========================================== +# UPLOAD_DATA_DIR: 업무 첨부 파일 보관 경로(호스트). 컨테이너의 /app/uploads 에 마운트된다. +# 볼륨이 없으면 재배포 시 첨부 파일이 유실된다. +UPLOAD_DATA_DIR=./data/uploads + # ========================================== # API 경로 # ========================================== diff --git a/docker-compose.yml b/docker-compose.yml index bfd35ea..b08e576 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -77,6 +77,12 @@ services: # 웹 푸시(VAPID) — 비밀 아닌 값만 루트에서 주입(PRIVATE_KEY 는 backend env_file) - VAPID_PUBLIC_KEY=${VAPID_PUBLIC_KEY} - VAPID_SUBJECT=${VAPID_SUBJECT} + # 업무 첨부 저장 경로(컨테이너 내부) — 아래 볼륨과 짝을 이룬다 + - UPLOAD_DIR=/app/uploads + volumes: + # 업무 첨부는 로컬 디스크에 저장된다. 볼륨이 없으면 재배포로 컨테이너가 + # 교체될 때 파일이 모두 사라지고, DB 의 첨부 레코드만 남아 다운로드가 실패한다. + - ${UPLOAD_DATA_DIR}:/app/uploads restart: unless-stopped networks: - app-network