问题描述
我正在尝试使用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是有关此主题的文章。