Docker Compose中JBPM无法连接同部署Postgres服务问题求助
这个报错完全不影响jBPM核心业务功能运行,属于非核心组件的告警日志:jBPM官方镜像默认开启了Jaeger链路追踪采集能力,默认配置会尝试向本地UDP 6831端口的Jaeger Agent上报链路追踪数据,但你的部署栈中没有部署Jaeger相关服务,目标端口未监听,因此触发ICMP Port Unreachable报错。
该日志为WARN级别,仅代表追踪数据上报失败,不会阻塞流程引擎、业务中心的正常启动和使用。你可以等容器启动2-3分钟后直接访问http://localhost:8080/business-central验证,默认登录账号密码均为wbadmin,能正常登录就说明核心服务已经运行正常,不需要被这类日志误导。
如果想要彻底消除这个报错日志,可根据自身需求选择以下方案:
方案1:直接关闭Jaeger追踪(推荐,无额外组件依赖)
在docker-compose.yml的jBPM服务环境变量配置段添加禁用Jaeger的启动参数即可,修改后的jBPM配置段参考如下:
jbpm: image: quay.io/kiegroup/jbpm-server-full environment: JBPM_DB_DRIVER: postgres JBPM_DB_HOST: postgres JAVA_OPTS_APPEND: "-Dquarkus.jaeger.enabled=false" ports: - 8080:8080 - 8001:8081 depends_on: - postgres
修改完成后执行docker-compose up -d重建jBPM容器,重启后就不会再输出Jaeger相关的报错日志。
方案2:补全Jaeger服务栈(有链路追踪需求时选择)
如果你确实需要使用链路追踪能力,可以在部署栈中新增Jaeger all-in-one服务,完整配置参考如下:
services: postgres: image: postgres:14.3-alpine volumes: - C:\Postgres:/var/lib/postgresql/data environment: POSTGRES_DB: jbpm POSTGRES_USER: jbpm POSTGRES_PASSWORD: jbpm ports: - 5432:5432 jaeger: image: jaegertracing/all-in-one:1.50 ports: - 6831:6831/udp - 16686:16686 restart: unless-stopped jbpm: image: quay.io/kiegroup/jbpm-server-full environment: JBPM_DB_DRIVER: postgres JBPM_DB_HOST: postgres QUARKUS_JAEGER_AGENT_HOST: jaeger ports: - 8080:8080 - 8001:8081 depends_on: - postgres - jaeger
部署完成后可以通过http://localhost:16686访问Jaeger UI查看链路追踪数据。
你当前使用Windows本地路径C:\Postgres作为Postgres的数据挂载目录,首次启动如果出现目录权限类报错,需要给该目录授予EveryOne用户完全控制权限,避免Postgres因无数据目录读写权限启动失败。
内容的提问来源于stack exchange,提问作者Ask_Ay

