Files
juwan-backend/deploy/dev
zetaloop 1a2df120af fix: bake 文件写入项目根目录以修复 buildx context 缓存问题
bake JSON 原先写入系统临时目录,buildx 默认以 bake 文件所在目录作为
构建 context,导致 COPY . . 复制空目录,go build 命中旧的 mount cache
产出旧二进制,源码变更后镜像内容不变。改为写入项目根目录的 .bake.json。
2026-04-24 08:16:42 +08:00
..
2026-04-06 12:29:48 +08:00
2026-04-23 02:39:59 +08:00

本地开发环境

前置条件

  • Docker(需要 buildx
  • Python 3(构建脚本)

使用

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/ 下所有 apirpcmqadapter 入口,通过 docker buildx bake 并行构建所有服务镜像,生成 juwan/<service>-<type>:dev

端到端接口测试走网关 http://127.0.0.1:1808018801-18809 是各服务的直连端口,不经过认证链路。

如需只启动部分服务:

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

环境变量

编辑 .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-TOKENXSRF-GUARD,再在请求头带上 xsrf-token

注册和密码重置都需要先调验证码接口拿到 requestId,再把它放到 X-Request-Id 请求头里发后续请求。

数据库初始化

首次启动时 PostgreSQL 会自动执行 desc/sql/ 下的建表语句。如需重新初始化,删除 volume 后重启:

docker compose down -v
docker compose up -d