137 lines
5.4 KiB
Markdown
137 lines
5.4 KiB
Markdown
# 玩值电竞App - Docker 运行与配置说明
|
||
|
||
> **玩值电竞 Web 已并入 website 编排**:与神射手等同在 **website** 项目下,容器名 `website-wanzhi-web`,端口 **3001**。
|
||
> **只使用唯一 MongoDB**:**datacenter_mongodb**(宿主机 27017),不新建 MongoDB;库 **wanzhi_esports** 只存在该实例。详见卡若AI 工作台《唯一MongoDB约定.md》。
|
||
|
||
**约定**:
|
||
- **访问**:前端/API 用 **http://localhost:3001**;数据库用唯一 MongoDB(datacenter_mongodb 27017),库名 **wanzhi_esports**。
|
||
- **一律用 Docker 跑网站,不用 pnpm dev**:启动、运行、部署均在神射手目录执行 `docker compose up -d --build`(**须带 `--build`**,确保容器内是本地最新代码)。建索引/种子在项目根目录执行 `bash docker/部署并运行.sh`。
|
||
- **本地更新后同步到 Docker**:每次改完代码/内容,要让 Docker 跑最新,须在神射手目录执行 **`docker compose up -d --build`**,否则容器内仍是旧镜像。
|
||
- 卡若AI 回答玩值电竞部署/运行/访问时,**须用卡若复盘格式**回复。
|
||
|
||
---
|
||
|
||
## 一、部署与运行(仅 Web 容器,连接现有 MongoDB)
|
||
|
||
**推荐**:从 **website** 编排统一启动(含神射手 + 玩值电竞),使用唯一 MongoDB(datacenter_mongodb 27017):
|
||
|
||
```bash
|
||
# 若曾单独起过 wanzhi-website,请先在玩值电竞App 目录执行:docker compose down
|
||
# 在神射手目录执行(--build 确保用本地最新代码构建并启动)
|
||
cd "/Users/karuo/Documents/开发/2、私域银行/神射手"
|
||
docker compose up -d --build
|
||
```
|
||
**直接使用最新**(推荐):在玩值电竞App 根目录执行一次即可无缓存重建并启动,后台顶栏会显示本次部署时间。
|
||
```bash
|
||
pnpm docker:latest
|
||
# 或
|
||
bash docker/使用最新并启动.sh
|
||
```
|
||
**同步本地最新到 Docker**:也可在神射手目录执行 `docker compose up -d --build`;若需在后台看到「部署:xxx」确认时间,请先 `export BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)` 再 build。
|
||
|
||
**本仓库**仅建索引/种子时在项目根目录执行(连接唯一 MongoDB):
|
||
|
||
```bash
|
||
MONGODB_URI=mongodb://localhost:27017 pnpm db:mongo:indexes
|
||
# 可选:MONGODB_URI=mongodb://localhost:27017 pnpm db:mongo:seed
|
||
```
|
||
|
||
- **Docker Desktop**:在「Containers」中见 **website** 下 **website-shensheshou**、**website-wanzhi-web**,无独立 MongoDB 容器。
|
||
- **唯一 MongoDB**:datacenter_mongodb(27017),玩值电竞库 wanzhi_esports 只存在该实例。
|
||
- **玩值电竞网页**:http://localhost:3001
|
||
|
||
---
|
||
|
||
## 二、访问地址
|
||
|
||
| 用途 | 地址 |
|
||
|:---|:---|
|
||
| 前端/API(所有网页) | **http://localhost:3001** |
|
||
| MongoDB | **唯一实例** datacenter_mongodb,localhost:27017(库 `wanzhi_esports`) |
|
||
|
||
---
|
||
|
||
## 三、环境变量与配置
|
||
|
||
| 变量 | 说明 | Docker 内 |
|
||
|:---|:---|:---|
|
||
| `MONGODB_URI` | MongoDB 连接串 | `mongodb://host.docker.internal:27017`(指向本机现有实例) |
|
||
| `NODE_ENV` | 运行环境 | `production` |
|
||
|
||
- 容器内通过 `host.docker.internal:27017` 访问本机 MongoDB;库名 `wanzhi_esports` 在应用内固定。
|
||
|
||
---
|
||
|
||
## 四、常用命令
|
||
|
||
| 操作 | 命令 |
|
||
|:---|:---|
|
||
| 启动 | `docker compose up -d` |
|
||
| 重建并启动 | `docker compose up -d --build` |
|
||
| 停止 | `docker compose down` |
|
||
| 查看日志 | `docker compose logs -f web` |
|
||
| 进入 Web 容器 | `docker compose exec web sh` |
|
||
| 本机建索引/种子 | `MONGODB_URI=mongodb://localhost:27017 pnpm db:mongo:indexes` / `pnpm db:mongo:seed` |
|
||
|
||
---
|
||
|
||
## 五、API 接口一览
|
||
|
||
所有接口前缀:**http://localhost:3001/api**。
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|:---|:---|:---|
|
||
| GET | `/api/games` | 游戏列表(本机 MongoDB `wanzhi_esports.games`) |
|
||
| 管理端 | `/api/admin/*` | 见项目内管理后台与 API 文档 |
|
||
|
||
---
|
||
|
||
## 六、代码/风格更新后同步到本地 Docker 网站
|
||
|
||
每次完成前端或管理后台改动(例如新风格、新页面)后,要让本地 Docker 网站显示更新,任选其一执行。
|
||
|
||
**方式 A(推荐)**:在玩值电竞App 项目根目录执行一键脚本(会到神射手目录重建 wanzhi-web 并启动):
|
||
|
||
```bash
|
||
cd "/Users/karuo/Documents/开发/3、自营项目/玩值电竞App"
|
||
bash docker/更新并同步到本地网站.sh
|
||
```
|
||
|
||
**方式 B**:在神射手目录执行 website 编排,只重建并启动玩值电竞容器:
|
||
|
||
```bash
|
||
cd "/Users/karuo/Documents/开发/2、私域银行/神射手"
|
||
docker compose build wanzhi-web --no-cache
|
||
docker compose up -d wanzhi-web
|
||
```
|
||
|
||
**方式 C**:在神射手目录重建并启动全部 website 服务(神射手 + 玩值电竞):
|
||
|
||
```bash
|
||
cd "/Users/karuo/Documents/开发/2、私域银行/神射手"
|
||
docker compose up -d --build
|
||
```
|
||
|
||
执行后访问 **http://localhost:3001**,管理后台 **http://localhost:3001/admin** 即可看到最新内容。
|
||
|
||
---
|
||
|
||
## 七、端口冲突时:结束占用并重新部署到该端口
|
||
|
||
若卡若AI/玩值AI 登记的网站端口 **3002** 被占用,**不改为其他端口**,按下列步骤结束占用进程后重新部署到 3002:
|
||
|
||
```bash
|
||
# 查占用 3002 的进程
|
||
lsof -i :3002
|
||
# 结束该进程(将 <PID> 换为实际 PID)
|
||
kill <PID>
|
||
# 重新部署到 3002
|
||
cd 项目根目录 && bash docker/部署并运行.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 八、打开 Docker 图形界面
|
||
|
||
在项目根目录执行 `./docker/打开Docker界面.command`,或双击该文件。界面中仅见 **wanzhi-website** 下的 **wanzhi-web**。
|