Docker运行ActiveMQ Artemis时Web控制台空白无法显示监控数据
问题场景
- 运行环境:本地Windows 10系统,使用Docker Desktop部署服务
- 镜像选择:从quay.io拉取ActiveMQ Artemis镜像,
dev.latest标签不可用,选用latest标签 - 原启动命令:
docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p8161:8161 -p61616:61616 -p5672:5672 --rm --name artemis quay.io/artemiscloud/activemq-artemis-broker
- 启动后正常表现:容器内ActiveMQ Artemis实例启动成功,可正常登录Web控制台,启动日志显示Hawtio、Jolokia组件均正常加载,控制台服务绑定容器内网地址
http://172.17.0.2:8161/console - 异常表现:
- 登录Web控制台后,消费者(Consumer)、生产者(Producer)、会话(Sessions)、队列(Queues)等功能标签区域为空白,无法查看对应数据
- 受Docker网络隔离限制,无法直接连通容器内网IP
172.17.0.2的控制台地址 - 访问宿主机映射地址
http://localhost:8161/console时功能区空白 - 访问
http://localhost:8161/console/jolokia接口返回403错误,错误信息:java.lang.Exception : Origin null is not allowed to call this agent
已知常规修复逻辑为修改jolokia-access.xml中的IP访问配置后重启服务,但容器内编辑文件后重启操作受限,需确认是否存在可直接传入的环境变量,用于禁用jolokia-access.xml中的CORS或严格访问限制。
解决方法
该镜像原生支持通过启动环境变量配置Jolokia访问规则,无需进入容器修改配置文件,也不需要构建自定义镜像,直接调整启动命令追加对应参数即可。
- 测试环境快速使用可直接关闭Jolokia严格来源校验,允许所有来源访问,启动命令如下:
docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -e AMQ_EXTRA_ARGS="--jolokia-access-type=all" -p8161:8161 -p61616:61616 -p5672:5672 --rm --name artemis quay.io/artemiscloud/activemq-artemis-broker
- 若需要保留基础访问限制,可仅放行本地访问来源,启动命令如下:
docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -e AMQ_EXTRA_ARGS="--jolokia-allow-origin=http://localhost:8161" -p8161:8161 -p61616:61616 -p5672:5672 --rm --name artemis quay.io/artemiscloud/activemq-artemis-broker
原启动命令携带
--rm参数,容器停止后会自动删除所有内部数据,通过环境变量传参的方式完全适配该启动逻辑,不需要额外做配置文件持久化挂载。
容器启动完成后等待10-20秒,待Jolokia组件完全加载后再访问http://localhost:8161/console,登录后即可正常查看队列、生产者、消费者、会话等所有功能模块,Jolokia接口403错误会同步消失。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

