Mac M1环境下Docker容器部署ActiveMQ Artemis失败求助
在Mac M1的Docker容器中部署ActiveMQ Artemis的解决方案
问题背景
在Mac M1上运行ActiveMQ Artemis容器时遇到多类报错:
- 直接执行基础启动命令时报错:
2024-02-09 20:30:14 CREATE_ARGUMENTS=--user artemis --password artemis --silent --require-login --http-host 0.0.0.0 --relax-jolokia Cannot initialize queue:Function not implemented Usage: artemis help [<args>...] use 'help <command>' for more information [<args>...]
- 添加
EXTRA_ARGS: "--nio --host 0.0.0.0 --http-host 0.0.0.0 --relax-jolokia"参数后出现段错误:
[Too many errors, abort]
2024-02-09 20:44:26 qemu: uncaught target signal 11 (Segmentation fault) - core dumped
- 使用Docker Compose配置启动后,容器虽能启动但无法连接Web控制台,日志最终仍出现段错误。
解决方案
问题核心是Mac M1的ARM架构与官方旧版latest-alpine镜像的x86架构不兼容,导致qemu模拟时出现异常。以下是两种可行的部署方案:
方案1:使用ARM架构兼容的指定版本镜像
官方从ActiveMQ Artemis 2.30.0版本开始提供ARM64架构适配的镜像,直接使用该版本及以上即可:
单容器启动命令
docker run --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:2.30.0-alpine
Docker Compose配置
修改docker-compose.yml,指定兼容ARM的镜像版本:
version: "3.8" services: activemq-artemis: container_name: artemis_simple image: apache/activemq-artemis:2.30.0-alpine environment: ARTEMIS_USER: "artemis" ARTEMIS_PASSWORD: "artemis" ports: - "8161:8161" - "61616:61616" restart: unless-stopped networks: - artemis networks: artemis: driver: bridge
方案2:强制拉取ARM架构的最新镜像
若想使用latest标签,可通过指定平台参数,确保Docker拉取ARM64架构的镜像:
docker run --platform linux/arm64/v8 --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:latest-alpine
验证部署
容器启动后,访问http://localhost:8161,使用配置的用户名artemis和密码artemis登录Web控制台,确认是否能正常访问。同时可通过消息客户端连接61616端口,测试消息收发功能是否正常。
内容的提问来源于stack exchange,提问作者skyho
相关产品推荐
相关产品推荐

