90 lines
2.6 KiB
Markdown
90 lines
2.6 KiB
Markdown
# 本地开发环境
|
||
|
||
## 前置条件
|
||
|
||
- Docker(需要 buildx)
|
||
- Python 3(构建脚本)
|
||
|
||
## 使用
|
||
|
||
```bash
|
||
cd deploy/dev
|
||
|
||
# 1. 构建所有微服务镜像
|
||
# 默认 8 并行,可通过环境变量 BAKE_BATCH_SIZE 调整
|
||
python3 build.py
|
||
|
||
# 2. 启动
|
||
docker compose up -d
|
||
|
||
# 3. 查看状态
|
||
docker compose ps
|
||
|
||
# 4. 通过网关访问
|
||
curl http://127.0.0.1:18080/healthz
|
||
|
||
# 5. 停止
|
||
docker compose down
|
||
```
|
||
|
||
构建脚本会扫描 `app/` 下所有 `api`、`rpc`、`mq`、`adapter` 入口,通过 `docker buildx bake` 并行构建所有服务镜像,生成 `juwan/<service>-<type>:dev`。
|
||
|
||
端到端接口测试走网关 `http://127.0.0.1:18080`,`18801-18813` 是各服务的直连端口,不经过认证链路。
|
||
|
||
如需只启动部分服务:
|
||
|
||
```bash
|
||
docker compose up -d postgres redis snowflake player-rpc player-api
|
||
```
|
||
|
||
## 端口映射
|
||
|
||
| 服务 | 宿主机端口 |
|
||
| --------------- | ---------- |
|
||
| PostgreSQL | 15432 |
|
||
| Redis | 16379 |
|
||
| Kafka | 19092 |
|
||
| Envoy Gateway | 18080 |
|
||
| users-api | 18801 |
|
||
| player-api | 18802 |
|
||
| game-api | 18803 |
|
||
| shop-api | 18804 |
|
||
| order-api | 18805 |
|
||
| wallet-api | 18806 |
|
||
| community-api | 18807 |
|
||
| objectstory-api | 18808 |
|
||
| email-api | 18809 |
|
||
| review-api | 18810 |
|
||
| dispute-api | 18811 |
|
||
| notification-api | 18812 |
|
||
| search-api | 18813 |
|
||
|
||
## 环境变量
|
||
|
||
编辑 `.env` 修改数据库密码、Kafka 地址等。默认值可直接用于本地开发。
|
||
|
||
管理员账户通过环境变量配置,`users-rpc` 启动时自动初始化:
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
| -------------- | ------------ | --------------- |
|
||
| ADMIN_USERNAME | 管理员用户名 | admin |
|
||
| ADMIN_PASSWORD | 管理员密码 | admin123 |
|
||
| ADMIN_EMAIL | 管理员邮箱 | admin@juwan.dev |
|
||
|
||
## 认证
|
||
|
||
登录和注册通过 `users-api` 下发 `JToken` Cookie。`envoy-gateway` 负责 JWT 校验并注入认证头,`authz-adapter` 做会话态二次校验,后端服务只消费 `x-auth-user-id` 等头。
|
||
|
||
写接口需要先 `GET /healthz` 领取 `XSRF-TOKEN` 和 `XSRF-GUARD`,再在请求头带上 `xsrf-token`。
|
||
|
||
注册和密码重置都需要先调验证码接口拿到 `requestId`,再把它放到 `X-Request-Id` 请求头里发后续请求。
|
||
|
||
## 数据库初始化
|
||
|
||
首次启动时 PostgreSQL 会自动执行 `desc/sql/` 下的建表语句。如需重新初始化,删除 volume 后重启:
|
||
|
||
```bash
|
||
docker compose down -v
|
||
docker compose up -d
|
||
```
|