2.0 KiB
2.0 KiB
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
編輯 .env(DB、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)