From 2f1314b46e8748cf3f5f4b9cd097cb4711869b5b Mon Sep 17 00:00:00 2001 From: zenn Date: Thu, 13 Aug 2026 15:11:27 +0900 Subject: [PATCH] =?UTF-8?q?NAS=20Docker=20=EC=95=B1=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=8B=A4=ED=96=89=20=EB=B0=B0=ED=8F=AC=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.nas.yml | 39 +++++++++++++++++++++++++++++++++++++++ docs/deploy.md | 19 +++++++++++++++++++ docs/history.md | 4 ++++ docs/map.md | 8 ++++++++ docs/update.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- 7 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 docker-compose.nas.yml diff --git a/docker-compose.nas.yml b/docker-compose.nas.yml new file mode 100644 index 0000000..eafdae7 --- /dev/null +++ b/docker-compose.nas.yml @@ -0,0 +1,39 @@ +services: + sori-studio: + image: ${SORI_STUDIO_IMAGE:-sori-studio:latest} + container_name: sori-studio + env_file: + - ${ENV_FILE:-.env.production} + ports: + - "${APP_PORT:-43080}:3000" + volumes: + - ./public/uploads:/app/public/uploads + depends_on: + - sori-studio-db + networks: + - sori-studio-network + restart: unless-stopped + + sori-studio-db: + image: postgres:16-alpine + container_name: sori-studio-db + env_file: + - ${ENV_FILE:-.env.production} + ports: + - "${DB_BIND_ADDRESS:-127.0.0.1}:${DB_PORT:-43081}:5432" + volumes: + - sori-studio-postgres:/var/lib/postgresql/data + - ./db/migrations:/docker-entrypoint-initdb.d:ro + networks: + - sori-studio-network + restart: unless-stopped + +volumes: + sori-studio-postgres: + +networks: + sori-studio-network: + driver: bridge + ipam: + config: + - subnet: ${DOCKER_SUBNET:-10.250.50.0/24} diff --git a/docs/deploy.md b/docs/deploy.md index c07c674..2da37ff 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -233,6 +233,25 @@ docker compose --env-file .env.production up -d --build docker compose --env-file .env.production up -d ``` +### UGREEN NAS Docker 앱 Buildx 우회 + +UGREEN NAS Docker 앱에서 `Docker Compose requires buildx plugin to be installed` 경고가 뜨면 NAS 앱이 `Dockerfile` 빌드를 직접 수행하지 못하는 상태다. 이때는 로컬에서 앱 이미지를 만든 뒤 NAS Docker 앱에 가져오고, NAS에서는 `build:`가 없는 `docker-compose.nas.yml`로 실행한다. + +로컬 Mac에서 NAS용 이미지를 만든다. DXP6800 Pro 같은 Intel NAS 기준은 `linux/amd64`다. + +```bash +docker buildx build --platform linux/amd64 -t sori-studio:latest --load . +docker save sori-studio:latest -o sori-studio-latest.tar +``` + +NAS Docker 앱에서 `sori-studio-latest.tar` 이미지를 가져온 뒤, Compose 생성 화면에는 `docker-compose.nas.yml` 내용을 사용한다. 이 파일은 앱 서비스를 `image: ${SORI_STUDIO_IMAGE:-sori-studio:latest}`로 실행하므로 NAS에서 Buildx 빌드를 시도하지 않는다. + +SSH를 쓸 수 있는 NAS에서는 같은 파일로 아래처럼 실행할 수 있다. + +```bash +docker compose -f docker-compose.nas.yml up -d +``` + 코드 변경 없이 `.env.production`만 수정했다면 `--build` 없이 `up -d`만으로 충분하다. ### Google 로그인 설정 diff --git a/docs/history.md b/docs/history.md index 91e1a7a..77f3f0d 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,3 +1,7 @@ +## 2026-08-13 v1.12.13 — UGREEN Docker 앱은 빌드 대신 이미지 실행 경로를 둔다 + +UGREEN NAS Docker 앱에서 Compose 프로젝트를 만들 때 Buildx 플러그인 없이 `build:` 서비스를 처리하지 못하는 환경이 확인됐다. 기본 `docker-compose.yml`은 Docker CLI나 Buildx가 있는 환경에서 기존처럼 Dockerfile 빌드를 수행하도록 유지하되, NAS GUI 배포에는 `build:`를 제거한 `docker-compose.nas.yml`을 별도로 둔다. 이 경로에서는 로컬에서 `sori-studio:latest` 이미지를 만든 뒤 NAS Docker 앱에 가져오고, NAS는 이미지를 실행만 하므로 Buildx 설치 여부에 막히지 않는다. + ## 2026-07-29 v1.12.11 — CSP unknown은 가능한 한 구분해서 관찰한다 `frame-src unknown`처럼 출처가 비어 보이는 보고는 실제 외부 서비스 차단인지, 빈 iframe·`about:blank`·브라우저 확장 프로그램이 만든 보고인지 구분하기 어렵다. Report-Only 관찰 초반에는 이런 분류가 허용 목록 판단의 잡음을 크게 만들 수 있으므로, 빈 blocked-uri는 `empty`, `about:blank` 계열은 `about:`, 확장 프로그램 URL은 브라우저별 extension scheme으로 따로 집계한다. 이 값들은 외부 origin 허용 후보가 아니라 원인 추적용 신호로만 본다. diff --git a/docs/map.md b/docs/map.md index 99417ff..5366bb4 100644 --- a/docs/map.md +++ b/docs/map.md @@ -122,6 +122,14 @@ | docs/update-log/v1.11.md | 방문자용 업데이트 공지 초안(v1.10 개발 구간) | | docs/update-log/v1.12.md | 방문자용 업데이트 공지 초안(v1.11 개발 구간) | +## Docker + +| 파일 | 용도 | +|------|------| +| Dockerfile | Nuxt 프로덕션 앱 이미지 빌드 | +| docker-compose.yml | Docker CLI·Buildx 가능 환경의 앱 빌드 포함 Compose 실행 | +| docker-compose.nas.yml | UGREEN NAS Docker 앱처럼 Buildx 없이 가져온 앱 이미지를 실행하는 Compose 설정 | + ## Nuxt 모듈 | 파일 | 용도 | diff --git a/docs/update.md b/docs/update.md index f9c4b9b..cf137b0 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,10 @@ # 업데이트 이력 +## v1.12.13 + +- UGREEN NAS Docker 앱에서 Buildx 없이 가져온 앱 이미지를 실행할 수 있도록 `docker-compose.nas.yml` 추가. +- NAS Docker 앱 Buildx 경고 우회용 로컬 이미지 빌드·가져오기 배포 절차 문서화. + ## v1.12.12 - UGREEN NAS Docker 앱 배포에서 `--env-file` 없이 Compose를 실행해도 PostgreSQL 환경 변수 치환 경고가 뜨지 않도록 DB 서비스 중복 환경 변수 선언 제거. diff --git a/package-lock.json b/package-lock.json index 5c754eb..ee9be29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sori.studio", - "version": "1.12.12", + "version": "1.12.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sori.studio", - "version": "1.12.12", + "version": "1.12.13", "hasInstallScript": true, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/package.json b/package.json index 54c09e3..2cdd258 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "1.12.12", + "version": "1.12.13", "private": true, "type": "module", "imports": {