feat: ship blog platform admin and deploy stack
This commit is contained in:
73
README.md
73
README.md
@@ -8,8 +8,9 @@ Monorepo for the Termi blog system.
|
||||
.
|
||||
├─ admin/ # React + shadcn admin workspace
|
||||
├─ frontend/ # Astro blog frontend
|
||||
├─ backend/ # Loco.rs backend APIs and legacy Tera admin
|
||||
├─ backend/ # Loco.rs backend APIs
|
||||
├─ mcp-server/ # Streamable HTTP MCP server for articles/categories/tags
|
||||
├─ deploy/ # Deployment manifests (docker compose/env examples)
|
||||
├─ .codex/ # Codex workspace config
|
||||
└─ .vscode/ # Editor workspace config
|
||||
```
|
||||
@@ -70,16 +71,16 @@ Legacy aliases are still available and now just forward to `dev.ps1`:
|
||||
|
||||
```powershell
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### Admin
|
||||
|
||||
```powershell
|
||||
cd admin
|
||||
npm install
|
||||
npm run dev
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### Backend
|
||||
@@ -90,6 +91,68 @@ $env:DATABASE_URL="postgres://postgres:postgres%402025%21@10.0.0.2:5432/termi-ap
|
||||
cargo loco start 2>&1
|
||||
```
|
||||
|
||||
### Docker(生产部署,使用 Gitea Package 镜像)
|
||||
|
||||
补充部署分层与反代说明见:
|
||||
|
||||
- `deploy/docker/ARCHITECTURE.md`
|
||||
- `deploy/caddy/Caddyfile.tohka.example`
|
||||
|
||||
```powershell
|
||||
docker compose -f deploy/docker/compose.package.yml --env-file deploy/docker/.env up -d
|
||||
```
|
||||
|
||||
当前 compose 默认启动:
|
||||
|
||||
- frontend: `http://127.0.0.1:4321`
|
||||
- admin: `http://127.0.0.1:4322`
|
||||
- backend api: `http://127.0.0.1:5150`
|
||||
|
||||
> 注意:`deploy/docker/compose.package.yml` 不内置 postgres/redis,需使用外部数据库与 Redis。
|
||||
|
||||
如果你不是直接用默认端口直连,而是走独立域名 / HTTPS / 反向代理,建议同时设置这些 compose 运行时变量:
|
||||
|
||||
- `INTERNAL_API_BASE_URL=http://backend:5150/api`
|
||||
- `PUBLIC_API_BASE_URL=https://api.blog.init.cool`
|
||||
- `PUBLIC_IMAGE_ALLOWED_HOSTS=cdn.example.com,pub-xxxx.r2.dev`
|
||||
- `ADMIN_API_BASE_URL=https://admin.blog.init.cool`
|
||||
- `ADMIN_FRONTEND_BASE_URL=https://blog.init.cool`
|
||||
|
||||
可复制 `deploy/docker/.env.example` 为 `deploy/docker/.env` 后,至少设置:
|
||||
|
||||
- `DATABASE_URL`
|
||||
- `REDIS_URL`
|
||||
- `JWT_SECRET`
|
||||
|
||||
如需覆盖镜像 tag:
|
||||
|
||||
```powershell
|
||||
$env:BACKEND_IMAGE="git.init.cool/<owner>/termi-astro-backend:latest"
|
||||
$env:FRONTEND_IMAGE="git.init.cool/<owner>/termi-astro-frontend:latest"
|
||||
$env:ADMIN_IMAGE="git.init.cool/<owner>/termi-astro-admin:latest"
|
||||
docker compose -f deploy/docker/compose.package.yml --env-file deploy/docker/.env up -d
|
||||
```
|
||||
|
||||
### Gitea Actions Docker 发布
|
||||
|
||||
仓库已新增:`.gitea/workflows/backend-docker.yml`
|
||||
|
||||
需要在仓库里配置:
|
||||
|
||||
- Secrets
|
||||
- `REGISTRY_USERNAME`
|
||||
- `REGISTRY_TOKEN`
|
||||
- Variables(可选)
|
||||
- `REGISTRY_HOST`(默认 `git.init.cool`)
|
||||
- `IMAGE_NAMESPACE`(默认仓库 owner)
|
||||
- `BACKEND_IMAGE_NAME`(默认 `termi-astro-backend`)
|
||||
- `FRONTEND_IMAGE_NAME`(默认 `termi-astro-frontend`)
|
||||
- `ADMIN_IMAGE_NAME`(默认 `termi-astro-admin`)
|
||||
- `FRONTEND_PUBLIC_API_BASE_URL`(frontend 镜像构建注入的浏览器侧 API 默认地址,默认 `http://localhost:5150/api`;运行时推荐优先使用 `PUBLIC_API_BASE_URL`)
|
||||
- `ADMIN_VITE_API_BASE`(admin 镜像构建注入的 API 默认地址,默认 `http://localhost:5150`;运行时可被 `ADMIN_API_BASE_URL` 覆盖)
|
||||
- `ADMIN_VITE_FRONTEND_BASE_URL`(admin 镜像构建注入的前台跳转默认基址,默认 `http://localhost:4321`;运行时可被 `ADMIN_FRONTEND_BASE_URL` 覆盖)
|
||||
- `ADMIN_VITE_BASENAME`(可选;如果 admin 要挂在 `/admin` 这类路径前缀下,构建时设置为 `/admin`)
|
||||
|
||||
### MCP Server
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user