启动ActiveMQ 5.15.9 Docker时警告

问题描述

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

这是我的ActiveMQ dockerfile

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 compose启动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,并且您的码头未配置为正确处理HTTPS请求。

您可以在撰写文件HTTP中轮询HTTPS端点而不是healthcheck

[...]
    healthcheck:
      test: ["CMD-SHELL","curl -k -f http://localhost:8161/admin"]
      interval: 5s
[...]

或查看/activemq/conf/jetty.xml并为HTTPS设置正确的配置,生成证书,将其安装在容器中,等等。Here是有关此主题的文章。