我正在运行 hivemq mqtt 代理社区版,并希望添加用于监控的 prometheus 扩展。两者都是从hivemq 市场和github 项目页面预编译的。我将这两个组件下载为 zip 文件,解压缩并使用此 dockerfile 将它们复制到 java 11 docker 容器中:FROM alpine:3.10 AS TOOLCHAINADD https://github.com/hivemq/hivemq-community-edition/releases/download/2019.1/hivemq-ce-2019.1.zip /opt/ADD https://www.hivemq.com/releases/extensions/hivemq-prometheus-extension-4.0.1.zip /opt/WORKDIR /optRUN unzip hivemq-ce-* -d ./RUN unzip hivemq-prometheus-extension* -d ./RUN rm -rf hivemq-ce-*.zipRUN rm -rf hivemq-prometheus-extension*.zipRUN mv ./hivemq-ce-* ./hivemqFROM openjdk:11-jdk-slimCOPY --from=TOOLCHAIN /opt/hivemq /opt/hivemqCOPY --from=TOOLCHAIN /opt/hivemq-prometheus-extension /opt/hivemq/extensions/hivemq-prometheus-extensionWORKDIR /opt/hivemq/CMD ["chmod","755","./bin/run.sh"]CMD ["./bin/run.sh"]我想我从操作方法中得到了正确的步骤,但是当我启动容器时docker build -t hive-test .; docker run -p 1883:1883 -p 9399:9399 -t hive-test出现错误。我还下载了代理和扩展源代码,并尝试自己用 maven/gradle 和 java 11 编译它。但结果完全相同。代理运行没有任何错误。有谁知道这里出了什么问题?
1 回答
隔江千里
TA贡献1906条经验 获得超10个赞
实际上,hivemq broker 社区版的依赖项不包含 ServletContextListener。我从github上下载了源码,修改了build.gradle文件。
将以下代码片段的最后一行添加到 build.gradle 文件中:
/* javax */
[group: 'javax.activation', name: 'activation', version: '1.1.1'],
[group: 'javax.validation', name: 'validation-api', version: '1.1.0.Final'],
[group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'],
[group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'],
编译代理后解压结果并将预编译的扩展添加到扩展目录。
错误消失了,扩展似乎在工作。
添加回答
举报
0/150
提交
取消