diff --git a/docker-compose.yaml b/docker-compose.yaml index 0ae15f8..de957d3 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,18 +1,26 @@ # 호스트 포트는 다른 스택과 겹치지 않게 4만 번대로 둔다. 충돌 시 아래 두 줄만 바꾼다. # 웹(nginx 정적): 호스트 42881 -> 컨테이너 80 # PocketBase: 호스트 42917 -> 컨테이너 8090 +# +# PocketBase 데이터는 호스트 ./pb_data 에 둔다(gitignore). NAS에서 권한 오류 시 +# pb_data 소유자를 user(기본 1000:10)에 맞추거나 user 값을 조정한다. services: pocketbase: image: ghcr.io/muchobien/pocketbase:latest - container_name: todo-pocketbase + container_name: pocketbase-todo restart: unless-stopped + user: "1000:10" + ports: + - "42917:8090" environment: PB_HOST: 0.0.0.0 PB_PORT: 8090 - ports: - - "42917:8090" volumes: - - pocketbase_data:/pb_data + - ./pb_data:/pb_data + command: + - serve + - --http=0.0.0.0:8090 + - --dir=/pb_data todo-web: build: @@ -26,6 +34,3 @@ services: - "42881:80" depends_on: - pocketbase - -volumes: - pocketbase_data: diff --git a/docs/deploy.md b/docs/deploy.md index 20d8a8c..215660b 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.6` +- `v0.0.7` NAS에 SSH로 올리는 **전체 순서**는 `docs/nas-deploy-guide.md`에 따로 정리했다. diff --git a/docs/history.md b/docs/history.md index aa08083..d7b590b 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,9 @@ # 의사결정 이력 +## 2026-04-13 · v0.0.7 — PocketBase Compose를 NAS 운영 패턴에 맞춤 + +NAS에서 이미 동작하던 PocketBase 설정(`user: 1000:10`, 호스트 `./pb_data` 바인드, `serve --dir=/pb_data` 명시, `container_name` pocketbase-todo)을 저장소 `docker-compose.yaml`에 반영했다. 기존 named volume `pocketbase_data`는 서비스가 바인드 마운트만 쓰므로 제거해 혼동을 줄였다. + ## 2026-04-13 · v0.0.6 — Git 작업 디렉터리 오해 방지 NAS에서 `apps` 상위 폴더에 `.git`이 없어 `git pull`이 실패하는 사례가 있어, `docs/nas-deploy-guide.md`에 **반드시 `todo`(클론 루트)로 `cd`한 뒤** Git을 실행한다는 안내와 `ls -a .git` 확인·13절 표 항목을 추가했다. diff --git a/docs/map.md b/docs/map.md index b0e6f45..ce93f9b 100644 --- a/docs/map.md +++ b/docs/map.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.6` +- `v0.0.7` | 경로 | 역할 | | ------------------------- | ----------------------------------------- | @@ -15,7 +15,7 @@ | `src/composables/useTodos.js` | 목록 로드·추가·완료 토글 | | `vite.config.js` | Vue 플러그인, PWA 매니페스트(`VITE_PUBLIC_APP_URL` 반영) | | `tailwind.config.js` | 테마 색·폰트 | -| `docker-compose.yaml` | PocketBase + 정적 웹(nginx), `container_name`·호스트 포트 기본 42881·42917 | +| `docker-compose.yaml` | PocketBase(`pocketbase-todo`, `./pb_data`, `user`) + 웹(`todo-web`), 호스트 포트 42881·42917 | | `Dockerfile` | Vite 빌드 후 nginx 이미지 | | `nginx.conf` | SPA 폴백 라우팅 | | `docs/nas-deploy-guide.md` | NAS SSH·Git 클론·Compose·PocketBase 설정 순서 | diff --git a/docs/nas-deploy-guide.md b/docs/nas-deploy-guide.md index 087648d..1e6698f 100644 --- a/docs/nas-deploy-guide.md +++ b/docs/nas-deploy-guide.md @@ -155,7 +155,7 @@ docker compose up -d --build docker compose ps ``` -`todo-pocketbase`, `todo-web`(컨테이너 이름·`docker-compose.yaml`의 `container_name`)이 `running`에 가깝게 보이면 된다. +`pocketbase-todo`, `todo-web`(컨테이너 이름·`docker-compose.yaml`의 `container_name`)이 `running`에 가깝게 보이면 된다. ### 6-3. 로그가 궁금할 때 @@ -318,7 +318,7 @@ PocketBase 컨테이너는 **기본적으로 HTTPS(TLS)를 제공하지 않는 | 폰에서만 안 됨 | `VITE_POCKETBASE_URL`이 `127.0.0.1`이 아닌지, 폰이 같은 Wi‑Fi인지, NAS IP가 맞는지 | | 빌드 후에도 주소가 이상함 | `docker compose build --no-cache` 후 다시 `up`, 또는 `export`를 잊지 않았는지 | | ARM NAS에서 이미지 오류 | 사용 중인 이미지가 해당 CPU 아키텍처를 지원하는지 로그로 확인한다. | -| 컨테이너 이름 충돌 | `todo-pocketbase`·`todo-web`이 이미 있으면 `docker-compose.yaml`의 `container_name`을 바꾼다. | +| 컨테이너 이름 충돌 | `pocketbase-todo`·`todo-web`이 이미 있으면 `docker-compose.yaml`의 `container_name`을 바꾼다. | | `fatal: not a git repository` | `apps`가 아니라 **`cd todo`(클론한 폴더)** 안에서 실행했는지 확인한다. | | `git pull`이 안 되거나 안 받아짐 | 10절 순서대로 `git status`·`fetch`·`checkout main`·`pull --ff-only`, 로컬 수정·비공개 저장소 자격 확인 | | `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` (`https://api…`) | 11-1절. 프록시 443·인증서·`proxy_pass`가 PB **HTTP** 포트로 가는지 확인 | diff --git a/docs/spec.md b/docs/spec.md index ef64c70..639eba5 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.6` +- `v0.0.7` ## 스택 @@ -37,7 +37,9 @@ 포트를 바꾼 경우 `VITE_POCKETBASE_URL`·`VITE_PUBLIC_APP_URL`의 포트·도메인도 동일하게 맞춘 뒤 이미지를 다시 빌드한다. -Compose에서 **`container_name`** 을 고정해 두었다: `todo-pocketbase`, `todo-web`. NAS에 같은 이름의 컨테이너가 이미 있으면 `docker-compose.yaml`에서 바꾼다. +Compose에서 **`container_name`** 을 고정해 두었다: `pocketbase-todo`, `todo-web`. NAS에 같은 이름의 컨테이너가 이미 있으면 `docker-compose.yaml`에서 바꾼다. + +PocketBase 데이터는 **호스트 바인드 마운트** `./pb_data:/pb_data`를 쓴다(저장소에는 디렉터리만 두고 내용은 Git에 포함하지 않음). 컨테이너 **`user: "1000:10"`** 은 UGREEN 등 NAS에서 흔한 UID/GID 조합이다. 권한 오류가 나면 호스트의 `pb_data` 소유권을 맞추거나 `user` 값을 환경에 맞게 바꾼다. ## 버전 정책 diff --git a/docs/update.md b/docs/update.md index f615848..253373c 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,9 @@ # 업데이트 로그 +## v0.0.7 + +- ~수정. `docker-compose.yaml` PocketBase를 NAS 검증 설정과 정렬(`user`, `./pb_data`, `command`, `container_name` pocketbase-todo). 미사용 named volume 제거. + ## v0.0.6 - ~수정. `docs/nas-deploy-guide.md`: `apps`에서 `git pull` 시 `not a git repository`가 나는 이유와 `cd todo`·`.git` 확인 절차, 13절 표 보강. diff --git a/package.json b/package.json index 20e168a..b9a3df2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "todo", "private": true, - "version": "0.0.6", + "version": "0.0.7", "type": "module", "scripts": { "dev": "vite",