启动 ActiveMQ 5.15.9 时发出警告 Docker

WARN when starting ActiveMQ 5.15.9 Docker

我正在尝试使用 Docker 图像启动 ActivemQ。

这是我的 ActiveMQ docker文件

FROM openjdk:8-jre

ENV ACTIVEMQ_VERSION 5.15.9
ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161

ENV ACTIVEMQ_HOME /opt/activemq

COPY files/${ACTIVEMQ}-bin.tar.gz /

RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
    ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    useradd -r -M -d $ACTIVEMQ_HOME activemq && \
    chown -R activemq:activemq /opt/$ACTIVEMQ && \
    chown -h activemq:activemq $ACTIVEMQ_HOME && \
    rm -f $ACTIVEMQ-bin.tar.gz

USER activemq

WORKDIR $ACTIVEMQ_HOME
EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI

CMD ["/bin/sh", "-c", "bin/activemq console"]

我用 Docker 撰写 docker 图像。

  activemq:
    image: activemq:5.15.9
    container_name: nita-activemq
    ports:
      - 8161:8161
      - 61616:61616
    healthcheck:
      test: ["CMD-SHELL", "curl -k -f https://localhost:8161/admin"]
      interval: 5s
      timeout: 3s
      retries: 20

产品启动成功,可以登录控制台工作。但它在日志中不断显示以下命令。

nita-activemq |  WARN | badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@905d5d7{r=0,c=false,a=IDLE,uri=}
nita-activemq |  WARN | Illegal character 0x16 in state=START for buffer HeapByteBuffer@3730f7b0[p=1,l=517,c=16384,r=516]={\x16<<<\x03\x01\x02\x00\x01\x00\x01\xFc\x03\x03\x83\x10w\x8c\xE6\xEf\x8e...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}

如何解决这个问题?

您的 healthcheck 测试命令正在轮询 https://localhost:8161/admin 并且您的 Jetty 未配置为正确处理 HTTPS 请求。

您可以在撰写文件 healthcheck:

中轮询 HTTP 端点而不是 HTTPS
[...]
    healthcheck:
      test: ["CMD-SHELL", "curl -k -f http://localhost:8161/admin"]
      interval: 5s
[...]

或查看 /activemq/conf/jetty.xml 并为 HTTPS 设置正确的配置、生成证书、将它们安装在容器中等。Here 是关于此主题的 post。