From a2707d658e9b13ec9c97c77a50537d38295e567a Mon Sep 17 00:00:00 2001 From: chpark Date: Sun, 26 Apr 2026 17:16:59 +0900 Subject: [PATCH] =?UTF-8?q?fix(momo):=20/data=5Fstorage=20=EB=A5=BC=20name?= =?UTF-8?q?d=20volume=20=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98=20?= =?UTF-8?q?=E2=80=94=20=EC=97=85=EB=A1=9C=EB=93=9C=20EACCES=20=ED=95=B4?= =?UTF-8?q?=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 호스트 바인드 마운트는 docker compose 가 root 소유로 자동 생성해 컨테이너 nextjs(uid 1001) 가 mkdir 불가. named volume(momo_data_storage) 은 Dockerfile 의 chown nextjs:nodejs 를 그대로 복제하여 권한 문제 사라짐. deploy.sh 의 host-side mkdir/chmod 도 더 이상 불필요하므로 제거. --- docker-compose.prod.yml | 11 ++++++++--- scripts/deploy.sh | 5 +---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index f5a1a3b..a23eb3f 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -12,9 +12,11 @@ services: env_file: - .env.production volumes: - - ./data_storage:/data_storage - # 업로드 이미지 영구 저장 (컨테이너 재빌드 시에도 보존) - - ./public/uploads:/app/public/uploads + # 업로드 이미지 영구 저장 — named volume 사용 + # (호스트 바인드 마운트 시 root 소유로 자동 생성되어 nextjs uid 1001 의 mkdir 권한 부족. + # named volume 은 이미지의 /data_storage 디렉토리(Dockerfile 에서 chown nextjs:nodejs)를 + # 볼륨 초기화 시 그대로 복제하므로 권한 문제 없음.) + - momo_data_storage:/data_storage # 자가 배포: webhook 이 호스트의 deploy.sh 를 실행하기 위함 - /var/run/docker.sock:/var/run/docker.sock - ./scripts/deploy.sh:/deploy/deploy.sh:ro @@ -34,3 +36,6 @@ services: networks: traefik-net: external: true + +volumes: + momo_data_storage: diff --git a/scripts/deploy.sh b/scripts/deploy.sh index ed3631e..ade2b3e 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -10,10 +10,7 @@ echo "[$(date)] git fetch + reset --hard origin/main" git fetch origin git reset --hard origin/main -# 업로드 디렉토리 보장 (컨테이너 마운트 경로) -mkdir -p public/uploads/items -chmod -R 777 public/uploads || true - +# 업로드 저장은 named volume(momo_data_storage)으로 이전됨 — 호스트 디렉토리 prep 불필요 echo "[$(date)] docker compose up --build" docker compose -f docker-compose.prod.yml up -d --build