# 本地开发覆盖(Backlog A 端口收敛后基线只发布 gateway 30000;补丁 #8 追加 config/shared 挂载)。 # # 用途: # 1. 宿主侧调试入口:psql/redis-cli/mqadmin/curl 业务端口、引擎契约测试脚本 # 2. 补丁 #8:16 个业务服务只读挂载 ./config/shared:/config/shared:ro,落实 # config/README.md 与 config/shared/audit-layer0-forms.yaml 里"开发 override 已挂载 # config/shared,改完重启生效"的承诺——改配置文件后 `docker compose restart <服务>` # 即生效,不必重建镜像;镜像内 COPY 的同份配置作交付/无挂载场景的自包含兜底 # # 规则: # - 端口全部绑 127.0.0.1,本机可用、不暴露局域网 # - docker compose 自动合并本文件(无需 -f);**交付包不含本文件**(assemble-offline-package.sh # 只 cp docker-compose.yml + .env.example),交付环境数据面改配置中心服务名直连 # (见 docs/release-checklist.md §0),无需这些端口,也不受下方 profiles 门控影响 # - 需要临时对局域网开放某端口(如手机联调)时,改本文件对应行去掉 127.0.0.1: 前缀 # - ports/volumes 合并都是数组拼接(非按 key 覆盖):同一服务的同一端口映射/同一挂载点 # 不要在两个文件里重复写,否则 docker 会重复绑定同一宿主端口 / 重复挂载而报错 # - ⚠️ !override / !reset 需要 docker compose v2.24+ # 补丁 #8:单一锚点,16 个业务服务共用,改挂载源只改这一处 x-config-shared-volume: &config-shared-volume - ./config/shared:/config/shared:ro # 本机 .env 的 CUSTOMER_DB_HOST/JNPF_REDIS_HOST 已指 CVM(YOUR_DB_HOST:15432 / :16432), # 栈内 cx-postgres / cx-redis 没有任何消费者。但基线 x-cx 锚点对两者是 service_healthy 强依赖, # depends_on 会隐式把它们拉起来——白占内存,且 cx/postgres 是 amd64 镜像,本机走 Rosetta 最吃 CPU。 # 故:① profiles 门控让它们不随 up -d 启动;② 清空业务服务的本地数据面依赖。 # # 回切本机沙盒档(.env 抄 .env.local,坐标改回 cx-postgres:5432)时二选一: # docker compose --profile local-db --profile local-redis up -d # 或 .env 里设 COMPOSE_PROFILES=local-db,local-redis # PG 数据卷 pgdata 保留未删,拉回即用。docker/preflight.sh 的自愈路径(显式 # `docker compose up -d cx-postgres`)仍有效——显式点名服务会自动激活其 profile。 # (PG/Redis 在 CVM,MQ 已删)。用 !reset 而非 !override 清空,与下方 cx-flow-engine 同款写法。 # ⚠️ 这里必须跟着基线一起改:本锚点是 !override/!reset 语义,会**整体替换** # docker-compose.yml 里 x-cx 的 depends_on——只改基线不改这里,改动会被这里覆盖回去。 x-no-local-data-plane: &no-local-data-plane depends_on: !override {} services: cx-postgres: profiles: [local-db] ports: # 本机 Homebrew postgresql@18 占 5432(127.0.0.1 精确绑定优先,L016),沿用 5433 - "127.0.0.1:5433:5432" cx-redis: profiles: [local-redis] ports: - "127.0.0.1:6379:6379" # cx-mq-namesrv / cx-mq-broker 的调试端口发布已随 RocketMQ 一并移除 cx-flow-engine: # 引擎库同样在 CVM(FLOW_DB_URL 由 CUSTOMER_DB_HOST/PORT 推导),本地无依赖 depends_on: !reset {} ports: # 引擎测试脚本入口(cx-flow-engine/test/*.sh http://127.0.0.1:31000)+ 本地 FlowDomain hairpin - "127.0.0.1:31000:31000" cx-onlyoffice: ports: # 浏览器直连 DS 载入 api.js 并渲染编辑器(前端 VITE_GLOB_ONLYOFFICE_URL 指向这里)。 # 与其他调试端口不同,这条是**功能必需**而非仅供调试:DS 的编辑器前端资源由浏览器 # 直接加载,不经网关。交付环境改为 Nginx 反代 https://<域名>/onlyoffice/(见方案 §8.4)。 - "127.0.0.1:20000:80" # 以下业务服务:<<: *no-local-data-plane 清空 depends_on # 平台聚合后默认后端为 gateway/platform/biz-common/lims/dms;eln/scheduletask 按 profile 启用。 # (PG/Redis 在 CVM,MQ 已于 2026-08-10 移除,本地已无任何数据面依赖可等) cx-gateway: <<: *no-local-data-plane volumes: *config-shared-volume # 平台聚合服务(2026-08-11):取代原 cx-oauth / cx-system / cx-visualdev / cx-flowable / # cx-file / cx-message / cx-permission / cx-visualdata / cx-app 九段。 # 只发布 30002 一个调试口——九个模块同进程,原来那 8 个端口已无对应监听。 # 回滚时把下面被注释的九段放回来(与 docker-compose.yml 的注释段一一对应)。 cx-platform: <<: *no-local-data-plane ports: ["127.0.0.1:30002:30002"] volumes: *config-shared-volume # ── 以下九段随平台聚合停用,保留以便回滚 ── # cx-oauth: # <<: *no-local-data-plane # ports: ["127.0.0.1:30001:30001"] # volumes: *config-shared-volume # cx-system: # <<: *no-local-data-plane # ports: ["127.0.0.1:30002:30002"] # volumes: *config-shared-volume # cx-visualdev: # <<: *no-local-data-plane # ports: ["127.0.0.1:30003:30003"] # volumes: *config-shared-volume # cx-flowable: # <<: *no-local-data-plane # ports: ["127.0.0.1:30004:30004"] # volumes: *config-shared-volume # cx-file: # <<: *no-local-data-plane # ports: ["127.0.0.1:30005:30005"] # volumes: *config-shared-volume # cx-message: # <<: *no-local-data-plane # ports: ["127.0.0.1:30008:30008"] # volumes: *config-shared-volume # cx-permission: # <<: *no-local-data-plane # ports: ["127.0.0.1:30010:30010"] # volumes: *config-shared-volume cx-lims: <<: *no-local-data-plane ports: ["127.0.0.1:30019:30019"] volumes: *config-shared-volume cx-eln: <<: *no-local-data-plane profiles: ["eln"] ports: ["127.0.0.1:30013:30013"] volumes: *config-shared-volume cx-biz-common: <<: *no-local-data-plane ports: ["127.0.0.1:30015:30015"] volumes: *config-shared-volume cx-dms: <<: *no-local-data-plane ports: ["127.0.0.1:30016:30016"] volumes: *config-shared-volume # cx-visualdata 随平台聚合停用,保留以便回滚 # cx-visualdata: # <<: *no-local-data-plane # ports: ["127.0.0.1:30011:30011"] # volumes: *config-shared-volume cx-scheduletask: <<: *no-local-data-plane ports: ["127.0.0.1:30009:30009"] volumes: *config-shared-volume # cx-app 随平台聚合停用,保留以便回滚 # cx-app: # <<: *no-local-data-plane # ports: ["127.0.0.1:30012:30012"] # volumes: *config-shared-volume