GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • 介绍

    • GoWind UBA 产品介绍
  • 架构参考

    • UBA 系统架构
    • UBA 后端模块总览
    • UBA 后端 API 契约
    • UBA 前端架构
  • 开发者指南(二开)

    • UBA 安装指南
    • UBA 代码生成管线教程
    • 新增对外服务教程
    • 新增业务实体教程
    • 新增前端页面教程
  • 运维指南

    • UBA Docker 部署指南
    • UBA 配置详解与安全清单
    • UBA PM2 部署指南
    • UBA Superset BI 部署指南
  • 数据分析师指南

    • 数据分析师上手指南
    • 基础聚合

      • 事件趋势分析
      • 活跃用户分析
      • 维度分组聚合
    • 转化与路径

      • 漏斗分析
      • 留存分析
      • 热门转化路径
      • 行为序列分析
    • 用户深度

      • 归因分析
      • 分布分析
      • 用户分群圈选
      • 点击热力图
      • 间隔时间分析
    • 生命周期

      • 用户生命周期
      • 流失与回流分析
      • 新老用户对比
      • 矩阵象限分析
    • 营收与价值

      • 营收分析
      • 付费分层(鲸鱼分析)
      • 历史 LTV 分析
    • 会话与异常

      • 会话分析
      • 同比环比与异常检测
    • 游戏专属

      • 关卡分析(游戏)
      • 滚服留存(游戏)
      • 同时在线分析(游戏)
      • 经济系统分析(游戏)
    • OLAP 查询手册
  • SDK 接入

    • Web SDK 接入指南
    • C# SDK 接入指南(Unity / Godot / .NET)
  • 附录

    • UBA 附录:端口、术语、已知限制与 FAQ

UBA Docker 部署指南

本文档面向运维人员,介绍 GoWind UBA 的两种 Docker 部署模式、compose 全栈服务清单、共用 Dockerfile 与构建流程。

先读 系统架构 与 配置详解。默认口令/密钥必须轮换,见配置详解的安全清单。


一、两种部署模式

模式脚本(Linux/macOS)脚本(Windows)compose 文件适用
libs_only(依赖模式)scripts/docker/libs_only.shscripts/docker/libs_only.ps1docker-compose.libs.yaml仅启动中间件,后端用 go run 本地调试
full_deploy(完整模式)scripts/docker/full_deploy.shscripts/docker/full_deploy.ps1docker-compose.yaml中间件 + 三服务,一键演示/生产

脚本会自动探测 docker compose(v2 插件)或回退 docker-compose,并预创建依赖的数据目录(postgres/redis/etcd/minio/jaeger)。


二、快速启动

Linux / macOS

cd backend
chmod +x scripts/**/*.sh

# 仅启动中间件依赖(开发推荐)
./scripts/docker/libs_only.sh

# 一键完整部署(中间件 + 后端三服务)
./scripts/docker/full_deploy.sh

Windows(PowerShell 管理员)

cd backend
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser   # 首次放行

.\scripts\docker\libs_only.ps1
# 或
.\scripts\docker\full_deploy.ps1

等价的 Make 命令

cd backend
make docker-libs   # OS 感知:自动调用对应平台的 libs_only 脚本
make docker-up     # OS 感知:自动调用 full_deploy
make docker-down   # docker compose down

三、全栈服务清单(docker-compose.yaml)

所有服务接入 app-tier bridge 网络,时区 TZ=Asia/Shanghai。

中间件

服务镜像宿主端口 → 容器端口说明
etcdquay.io/coreos/etcd:v3.6.82379, 2380服务发现(三服务均依赖)
jaegerjaegertracing/all-in-one:latest6831/udp, 5778, 4317, 4318, 16686, 14250/68/69链路追踪,OTLP 已启用,UI http://localhost:16686
redisbitnami/redis:latest6379密码 *Abcd123456;禁用 FLUSHDB/FLUSHALL/CONFIG
kafkabitnami/kafka:latest9092, 9093KRaft 模式,单节点 controller+broker
miniominio/minio:latest9001→9000, 9002→9001root / *Abcd123456,默认 bucket images,UI http://localhost:9002
postgresbitnami/postgresql:latest5432user postgres / 密码 *Abcd123456
doris-feapache/doris:fe-4.0.48030, 9030, 9010Doris Frontend,静态 IP 172.20.80.2:9010,FE_ID=1
doris-beapache/doris:be-4.0.48040, 9050Doris Backend,BE_ADDR=172.20.80.3:9050
supersetapache/superset:latest8088以 root 运行,自动安装 pymysql+pydoris 并初始化(admin/admin)

compose 中另有 consul、mysql/mariadb、clickhouse 的注释块,按需取消注释。

应用服务

三服务共用同一个 Dockerfile,通过构建参数 SERVICE_NAME 选择编译哪个二进制:

服务镜像宿主端口SERVICE_NAMEdepends_on
admin-servicego-wind-uba/admin-service:1.0.09700, 9701adminpostgres, redis, minio, etcd, jaeger
collector-servicego-wind-uba/collector-service:1.0.09800, 9801collectorpostgres, redis, minio, etcd, jaeger
core-servicego-wind-uba/core-service:1.0.0(不映射宿主端口)corepostgres, redis, minio, etcd, jaeger

⚠️ 端口说明:compose 映射的 9700/9701、9800/9801 是宿主机 → 容器映射。但服务 YAML 里 server.yaml 实际监听的是 admin 5600/5601、collector 5700。当前 compose 端口映射与服务监听端口不一致——生产化时需统一(改 compose 映射或改服务 server.yaml)。详见 配置详解 · 端口对照。

libs 模式

docker-compose.libs.yaml 与完整版的中间件部分完全相同,但不含 admin/collector/core 三个应用服务——这就是 libs_only 模式,后端用 go run 本地启动调试。


四、构建应用镜像

cd backend

# 方式 1:递归为每个服务构建镜像
make docker

# 方式 2:在单个服务目录构建
cd app/admin/service
make docker   # docker build -t $PROJECT_NAME/$APP_NAME --build-arg SERVICE_NAME=admin ...

Dockerfile(backend/Dockerfile)通过 --build-arg SERVICE_NAME={admin|collector|core} 与 --build-arg APP_VERSION=... 控制产物,多阶段构建产出最小化镜像。


五、网络与依赖细节

  • 应用网络:三服务都在 app-tier,互相用服务名(core-service:5600 等)通信;core 的 gRPC 经 etcd 发现。
  • Doris 静态 IP:FE/BE 用了 172.20.80.x 静态地址(Doris 集群配置要求),不要随意改网络段。
  • Kafka advertised listener:compose 内 Kafka 对容器内通告 kafka:9092,而 collector 的 data.yaml 默认连 127.0.0.1:9092。容器化部署时需把 collector 的 kafka 地址改为 kafka:9092。
  • Postgres 库名:compose 默认 POSTGRES_DB=gwubd,但服务 data.yaml 连的是 gw_uba——需对齐(改 compose env 或建库)。

六、健康检查与排错

现象排查方向
三服务起不来docker logs <svc>;通常是连不上 PG/Redis/etcd,确认 depends_on 已起且网络段正确
admin 拨不通 coreetcd 是否注册成功(docker exec etcd etcdctl get --prefix /);core gRPC 是否启动
Kafka 收不到数据collector 的 kafka 地址是否指向 kafka:9092(容器内)而非 127.0.0.1
Doris 查询慢/超时FE/BE 是否就绪(http://localhost:8030);BE_ADDR 是否正确
数据查不到确认 OLAP 引擎的 Kafka 消费作业是否正常(Doris:SHOW ROUTINE LOAD;ClickHouse:查 Kafka 引擎表/物化视图);详见 系统架构 · Kafka 消费入库机制

链路追踪用 Jaeger UI(http://localhost:16686)查看跨服务调用。


七、相关文档

  • 系统架构
  • 配置详解(安全清单)
  • PM2 部署
  • Superset 部署
  • 附录 · 端口对照表
Edit this page
Last Updated:: 6/29/26, 3:57 PM
Contributors: Bobo
Next
UBA 配置详解与安全清单