chore: align local docker environment

This commit is contained in:
2026-05-19 13:40:25 +08:00
parent 7292bb2eaf
commit c49e1b3187
6 changed files with 117 additions and 5 deletions

View File

@@ -616,6 +616,80 @@
"message": "docs: record upload generation safeguards",
"hash": "1728808",
"files_changed": 2
},
{
"ts": "2026-05-19T12:09:24+08:00",
"type": "commit",
"message": "chore: record Muse Mate generation run",
"hash": "7292bb2",
"files_changed": 1
},
{
"ts": "2026-05-19T04:10:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T04:20:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T04:30:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T04:40:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T04:50:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T05:00:01Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T05:10:02Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T05:20:02Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T05:30:02Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T05:40:02Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 分支 master · 1 项未提交变更 · 最近提交chore: record Muse Mate generation run",
"files_changed": 1
},
{
"ts": "2026-05-19T13:40:25+08:00",
"type": "commit",
"message": "auto-save 2026-05-19 13:40 (+1, ~2)",
"hash": "f4ce3d4",
"files_changed": 3
}
]
}

View File

@@ -6,7 +6,7 @@
"created": "2026-05-18",
"urls": [
{ "type": "app", "url": "https://ai-toy.kang-kang.com", "label": "VPS 生产" },
{ "type": "app", "url": "http://localhost:4560", "label": "本地 dev" }
{ "type": "app", "url": "http://localhost:4560", "label": "本地 Docker" }
],
"credentials": [
{ "name": "OPENAI_API_KEY", "env": "OPENAI_API_KEY", "note": "GPT 文本/结构化/图片生成;没填则图片 mock" },
@@ -25,7 +25,8 @@
},
"stack": [
"Next.js + GPT + Seedance",
"Docker Compose + Coolify Traefik"
"Docker Compose local/prod parity",
"Coolify Traefik"
],
"ownership": "personal"
}

View File

@@ -1,8 +1,9 @@
# AI玩具专利生成工作流
## 启动
- `cd ~/Projects/code/20260518-ai-toy-patent-workflow && npm run dev`端口 4560
- 推荐本地环境:`cd ~/Projects/code/20260518-ai-toy-patent-workflow && npm run docker:up` — Docker Compose端口 4560
- 浏览器打开 http://localhost:4560
- 备用非 Docker 开发:`npm run dev` — 端口 4560
- 首次依赖装好:`npm install --legacy-peer-deps`next 15 + react 19 有 peer 警告)
## 部署事实
@@ -11,7 +12,7 @@
- 服务名 / 容器名:`ai-toy-patent-workflow`
- 服务器路径:`/opt/ai-toy-patent-workflow`
- 主站 / 前端https://ai-toy.kang-kang.com
- 本地 devhttp://localhost:4560
- 本地 Dockerhttp://localhost:4560
- API / 后端:内置 Next.js API Route生产同域名
- 文档 / 解析:无
- 管理后台:无
@@ -22,6 +23,8 @@
## 元数据回写清单
- 改公网域名或迁移部署时,更新 `.project.json.urls` + 本节
- 数据持久化在 `data/`gitignored不入库上传原图在 `data/uploads/`
- 本地 Docker 使用 `docker-compose.yml`,挂载 `./data:/app/data`,读取 `.env.local`,并强制 `PUBLIC_APP_URL=http://localhost:4560`
- VPS 生产 Docker 使用 `docker-compose.prod.yml`,挂载 `./data:/app/data`,读取 `deploy/.env.production`,并强制 `PUBLIC_APP_URL=https://ai-toy.kang-kang.com`
- VPS 数据持久化在 `/opt/ai-toy-patent-workflow/data`
- VPS 生产环境变量在 `/opt/ai-toy-patent-workflow/deploy/.env.production`,不入库
@@ -35,6 +38,7 @@
- `SEEDANCE_API_BASE` — 默认 `https://ark.cn-beijing.volces.com/api/v3`
- `PUBLIC_APP_URL` — 生产填公网入口,用于把 `/api/img/...` 补成 Seedance 可访问的绝对 URL
- 配置位置:`.env.local`gitignored参考 `.env.local.example`
- 生产配置模板:`deploy/.env.production.example`;真实生产值只放 VPS 的 `/opt/ai-toy-patent-workflow/deploy/.env.production`
- 图片生成未配置 GPT Key 时回退 mockSVG 占位图),视频生成不 mock必须配置 Seedance Key
## 规则

View File

@@ -0,0 +1,10 @@
# GPT API. Keep the real value only on the VPS at deploy/.env.production.
OPENAI_API_KEY=
GPT_TEXT_MODEL=gpt-5.5
GPT_IMAGE_MODEL=gpt-image-2
GPT_API_BASE=https://api.openai.com/v1
# Seedance video generation.
SEEDANCE_API_KEY=
SEEDANCE_MODEL=doubao-seedance-2-0-260128
SEEDANCE_API_BASE=https://ark.cn-beijing.volces.com/api/v3

20
docker-compose.yml Normal file
View File

@@ -0,0 +1,20 @@
name: ai-toy-patent-workflow-local
services:
web:
container_name: ai-toy-patent-workflow-local
build:
context: .
dockerfile: Dockerfile
image: ai-toy-patent-workflow:local
restart: unless-stopped
env_file:
- ./.env.local
environment:
NODE_ENV: production
PORT: "4560"
PUBLIC_APP_URL: http://localhost:4560
ports:
- "4560:4560"
volumes:
- ./data:/app/data

View File

@@ -6,7 +6,10 @@
"dev": "next dev -p 4560",
"build": "next build",
"start": "next start -p 4560",
"lint": "next lint"
"lint": "next lint",
"docker:up": "docker compose up -d --build",
"docker:down": "docker compose down",
"docker:logs": "docker compose logs -f web"
},
"dependencies": {
"next": "^15.5.18",