我正在運行 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
提交
取消