Files
member-platform/docs/VPS_DEPLOY_RUNBOOK.md

2.0 KiB
Raw Blame History

VPS Deploy Runbook

1) 拉整合層 + 子模組

cd /opt
git clone --recurse-submodules http://127.0.0.1:8888/member/member-platform.git
cd member-platform
git submodule update --init --recursive

2) 後端部署Docker

cd /opt/member-platform/backend
cp .env.production .env

編輯 .envDB、Keycloak、Realm Roles、Cache

首次建表:

psql "postgresql://<user>:<pass>@<host>:<port>/<db>" -f scripts/init_schema.sql

啟動:

docker build -t memberapi-backend:latest .
docker rm -f memberapi-backend 2>/dev/null || true
docker run -d \
  --name memberapi-backend \
  --restart unless-stopped \
  -p 127.0.0.1:8000:8000 \
  --env-file .env \
  memberapi-backend:latest

檢查:

curl http://127.0.0.1:8000/healthz
docker logs -f memberapi-backend

用 docker compose建議

Compose 檔案:docker-compose.example.yml

啟動:

cd /opt/member-platform
cp docker-compose.example.yml docker-compose.yml

docker compose up -d --build

檢查:

docker compose ps
docker compose logs -f backend

停止:

docker compose down

3) 前端部署Nginx

cd /opt/member-platform/frontend

production build 會自動讀取 .env.production,請先確認設定:

VITE_API_BASE_URL=https://memberapi.ose.tw

Build

npm ci
npm run build

Nginx root 指向 frontend/dist,並加 SPA rewrite

location / {
  try_files $uri $uri/ /index.html;
}

4) 更新流程

cd /opt/member-platform
git pull
git submodule update --init --recursive --remote

後端更新:

cd backend
docker build -t memberapi-backend:latest .
docker rm -f memberapi-backend
docker run -d --name memberapi-backend --restart unless-stopped -p 127.0.0.1:8000:8000 --env-file .env memberapi-backend:latest

前端更新:

cd ../frontend
npm ci
npm run build

5) 建議網域

  • Frontend: member.ose.tw
  • API: memberapi.ose.tw(反代 127.0.0.1:8000