刘光辉
13 小时以前 34981c30a78e8bbd7791131059a9210f9928b62c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# cx-postgres 与 cx-redis 都退出测试环境栈:
#   - profiles 门控让它们不随 docker compose up -d 启动。PG 数据卷保留,
#     要临时拉回:docker compose --profile local-db up -d cx-postgres
#     (redis 同理 --profile local-redis)
#   - 业务服务的 depends_on 用 !override 清空(PG/Redis 在 CVM;MQ 已于 2026-08-10 退栈)——
#     不改的话基线对 cx-postgres/cx-redis 的 service_healthy 依赖会在每次 up
#     时把它们拉起来
#   - 移除旧拓扑的 3000->5432 端口发布(「本机=正式库、开发机 VPN 直连 3000」
#     时代的产物,见 docs/adr-single-db-topology.md(已过时);0.0.0.0 暴露 +
#     出厂密码是安全隐患)。Windows 防火墙的 cx-pg-3000 放行规则可一并删除。
#
# 启用方式:服务器 .env 设 COMPOSE_FILE=docker-compose.yml;docker-compose.testenv.yml
#   (Windows 下 compose 路径分隔符默认是分号)。交付基线 / 本地开发均不引用本文件。
# ⚠️ !override / !reset 需要 docker compose v2.24+。
services:
  cx-postgres:
    profiles: [local-db]
 
  # 测试环境 Redis 也在 CVM(cx-redis-customer1:16432),本机实例同样退栈
  cx-redis:
    profiles: [local-redis]
 
  # 引擎库同样在 CVM(FLOW_DB_URL 由 CUSTOMER_DB_HOST/PORT 推导),本地无依赖
  cx-flow-engine:
    depends_on: !reset {}
 
  # 2026-08-19:DS 编辑器端口。基线不发布任何 DS 端口,开发机靠 docker-compose.override.yml
  # 的 "127.0.0.1:20000:80"——但**测试环境不加载 override**(本文件顶部的 COMPOSE_FILE 只串
  # docker-compose.yml + 本文件),所以那条对这里不生效,表现就是 `compose ps` 只见
  # 80/tcp、443/tcp 而无宿主映射。
  #
  # 🔴 与 override 的关键差异:这里**不能**绑 127.0.0.1。DS 的编辑器前端资源(api.js 及
  # 其后续静态件)是由**测试人员自己电脑上的浏览器**直接加载的,不经网关也不经 cx-web;
  # 绑 127.0.0.1 就只有登到这台 server 上开浏览器才打得开。故按 0.0.0.0 发布,与基线
  # 已经这么发布的 80 / 30000 一致(都是测试环境刻意对局域网开放的口)。
  #
  # 配套:服务器 .env 必须设 ONLYOFFICE_DS_PUBLIC_URL=http://<本机局域网IP>:20000
  # (浏览器视角的地址,默认值 http://localhost:20000 里的 localhost 指的是浏览器所在的
  # 那台机器,在测试环境是错的)。另两个 DS 视角的键保持默认即可——DS 在栈内,
  # cx-gateway:30000 解析得到。
  cx-onlyoffice:
    ports:
      - "20000:80"
 
  # 业务服务两件事(锚点复用):
  # ① 清空 depends_on:本地 cx-postgres / cx-redis 已退栈,namesrv 随 RocketMQ 一并移除;
  # ② 挂载 config/shared(与开发 override 同款「配置跟仓库走」形态)——不挂载的话
  #    容器读的是构建镜像时烧入的旧配置,git pull 下来的 datasource.yaml 等对容器
  #    不可见(2026-08-08 实踩:redis 坐标参数化后测试环境仍连 cx-redis,因旧镜像内
  #    yaml 无占位符)。挂载与基线的 jnpf-resources 卷按 target 合并,互不覆盖。
  cx-gateway: &no-local-pg
    # 2026-08-10 事件总线切 Redis、RocketMQ 退栈后,本地数据面依赖归零(PG/Redis 在 CVM)
    depends_on: !override {}
    volumes:
      - ./config/shared:/config/shared:ro
  # 2026-08-11 平台聚合:cx-oauth / cx-system / cx-visualdev / cx-flowable / cx-file /
  # cx-message / cx-permission / cx-visualdata / cx-app 九个已合并为 cx-platform。
  # 回滚时把下面注释的九行放回来(与 docker-compose.yml 的注释段一一对应)。
  cx-platform: *no-local-pg
  # cx-oauth: *no-local-pg
  # cx-system: *no-local-pg
  # cx-visualdev: *no-local-pg
  # cx-flowable: *no-local-pg
  # cx-file: *no-local-pg
  # cx-message: *no-local-pg
  # cx-permission: *no-local-pg
  # cx-visualdata: *no-local-pg
  # cx-app: *no-local-pg
  cx-lims: *no-local-pg
  cx-eln: *no-local-pg
  cx-biz-common: *no-local-pg
  cx-dms: *no-local-pg
  cx-scheduletask: *no-local-pg