refactor: serve static frontend with Go APIs
This commit is contained in:
1 parent
763d2f0648
commit
b14b4fced7
101 files changed
+963
-3928
No files matched your search
+16
-69
@@ -29,7 +29,7 @@
|
||||
|
||||
## 技术栈
|
||||
|
||||
- Next.js 15(前端:页面、静态资源、SSR)
|
||||
- Next.js 15(构建期静态导出,生产由 Nginx 托管)
|
||||
- Go 1.21(生产后端:独占 `/api`、`/uploads`、`/generated-results`,内嵌 WorkerLoop,见 `backend/` 与 [`docs/DEPLOYMENT.md`](./docs/DEPLOYMENT.md))
|
||||
- React 19
|
||||
- TypeScript
|
||||
@@ -54,77 +54,27 @@ npm run dev -- --hostname 127.0.0.1 --port 3000
|
||||
http://127.0.0.1:3000
|
||||
```
|
||||
|
||||
生产模式:
|
||||
静态生产构建:
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
`npm start` 会先执行 `next build`,再启动 `127.0.0.1:3000`。
|
||||
|
||||
## 服务器一键部署
|
||||
|
||||
服务器推荐使用 Docker Compose:
|
||||
|
||||
```bash
|
||||
git clone <你的仓库地址>
|
||||
cd NianAIGC
|
||||
bash scripts/deploy.sh
|
||||
```
|
||||
|
||||
脚本会自动完成:
|
||||
|
||||
- 创建 `.env.local`
|
||||
- 创建 `.runtime/data`、`.runtime/uploads`、`.runtime/generated-results`
|
||||
- 创建 `.runtime/logs`
|
||||
- 构建 Docker 镜像
|
||||
- 使用 `docker compose up -d --build` 后台启动 Web 服务和 Worker 服务
|
||||
|
||||
默认访问:
|
||||
|
||||
```text
|
||||
http://服务器IP:3000
|
||||
```
|
||||
|
||||
如果要换端口,可以编辑 `.env.local`:
|
||||
|
||||
```env
|
||||
APP_PORT=8080
|
||||
NEXT_PUBLIC_APP_URL=http://你的服务器IP:8080
|
||||
```
|
||||
|
||||
然后重新执行:
|
||||
|
||||
```bash
|
||||
bash scripts/deploy.sh
|
||||
```
|
||||
|
||||
常用 Docker 命令:
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
docker compose logs -f zhinian-aigc
|
||||
docker compose logs -f zhinian-worker
|
||||
docker compose restart
|
||||
docker compose down
|
||||
```
|
||||
|
||||
如果服务器不用 Docker,也可以用 Node 直接部署:
|
||||
|
||||
```bash
|
||||
npm ci
|
||||
npm run build
|
||||
npm run start:server
|
||||
```
|
||||
|
||||
另开一个进程运行任务 Worker:
|
||||
构建结果位于 `out/`。生产不运行 Node Web 进程;仓库 Dockerfile
|
||||
使用非 root Nginx 托管静态文件,浏览器通过同域 `/api` 调用 Go。
|
||||
|
||||
## 生产部署
|
||||
|
||||
生产推荐使用 ACK 路径分流:
|
||||
|
||||
```bash
|
||||
npm run worker
|
||||
docker build -t REGISTRY/PROJECT/zhinian-aigc:TAG .
|
||||
npm run deploy:check
|
||||
```
|
||||
|
||||
生产环境建议把 `NEXT_PUBLIC_APP_URL` 设置成真实域名或公网地址,配置 `ZHINIAN_INTERNAL_WORKER_TOKEN`,并把 `.runtime/` 做定期备份。
|
||||
部署后如果页面或接口报错,登录后台访问 `/logs` 查看最近错误、请求路径、状态码和错误栈。日志文件默认在 `.runtime/logs/server-events.jsonl`。
|
||||
Ingress 将 `/api`、`/uploads`、`/generated-results` 转发给 Go,其余请求转发给
|
||||
静态 Web。Web 不接收数据库、会话密钥或其他运行时配置。完整的 RDS、Secret、迁移和
|
||||
发布步骤见 [`docs/DEPLOYMENT.md`](./docs/DEPLOYMENT.md)。
|
||||
|
||||
## 常用命令
|
||||
|
||||
@@ -132,8 +82,6 @@ npm run worker
|
||||
npm run dev -- --hostname 127.0.0.1 --port 3000
|
||||
npm test
|
||||
npm run build
|
||||
npm run health
|
||||
npm run worker:once
|
||||
npm run info
|
||||
```
|
||||
|
||||
@@ -336,9 +284,10 @@ cp .env.example .env.local
|
||||
## 项目结构
|
||||
|
||||
```text
|
||||
app/ Next.js App Router 页面与 API
|
||||
app/ Next.js App Router 静态页面
|
||||
backend/ Go API、持久化与内嵌 WorkerLoop
|
||||
components/ 前端组件
|
||||
lib/ 业务逻辑、服务端适配器、接口客户端
|
||||
lib/ 前端共享逻辑与浏览器接口客户端
|
||||
lib/ui/motion.ts GSAP 动效工具层
|
||||
public/logo/ 品牌 Logo
|
||||
scripts/ 启动、健康检查与信息脚本
|
||||
@@ -355,8 +304,6 @@ docker-compose.yml 服务器部署编排
|
||||
```bash
|
||||
npm test
|
||||
npm run build
|
||||
npm run health
|
||||
npm run worker:once
|
||||
```
|
||||
|
||||
如果本地 dev server 正在运行,建议先停止后再执行生产构建,避免 Next.js dev 缓存与生产构建互相影响。
|
||||
|
||||
Reference in new issue
Block a user