From da65799e2adc16d749638abb3a794094167ef22d Mon Sep 17 00:00:00 2001 From: TtiPo Date: Tue, 21 Jul 2026 23:37:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=85=EB=AC=B4=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=20=EC=A0=80=EC=9E=A5=20=EA=B2=BD=EB=A1=9C=EC=97=90=20=EB=B3=BC?= =?UTF-8?q?=EB=A5=A8=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit backend 컨테이너에 볼륨이 없어 업무 첨부가 컨테이너 내부에만 쌓였고, 재배포로 컨테이너가 교체될 때 파일이 모두 사라졌다. DB 의 첨부 레코드는 남아 있어 목록에는 보이지만 다운로드는 실패한다. - backend 에 UPLOAD_DIR=/app/uploads 주입 + ${UPLOAD_DATA_DIR} 볼륨 연결 - 루트 env 예시에 UPLOAD_DATA_DIR 추가(다른 *_DATA_DIR 과 동일한 규격) 이미 유실된 파일은 복구되지 않는다. Co-Authored-By: Claude Opus 4.8 (1M context) --- .env.development.example | 7 +++++++ .env.production.example | 7 +++++++ docker-compose.yml | 6 ++++++ 3 files changed, 20 insertions(+) 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