在我的 Mac M1 上特定地通过 Docker 运行 ActiveMQ Artemis。

3

我正在尝试在Docker上运行ActiveMQ Artemis,但一直无法使其正常工作,我不确定是否与我的yml文件有关。

这是我使用的命令:docker-compose up

这是我的yml文件:

version: '2'

services:

  artemis:
    image: quay.io/artemiscloud/activemq-artemis-broker
    ports:
      - "8161:8161"
      - "61616:61616"
      - "5672:5672"
    environment:
       ARTEMIS_USERNAME: "admin"
       ARTEMIS_PASSWORD: "admin"
    networks:
      - amqp-quickstart-network
networks:
  amqp-quickstart-network:

我收到了这个错误,但不确定如何解决它。

Attaching to infrastructure-artemis-1
infrastructure-artemis-1  | Creating Broker with args --role admin --name broker --allow-anonymous --http-host 172.19.0.2 --host 172.19.0.2  --force
infrastructure-artemis-1  | Cannot initialize queue:Function not implemented
infrastructure-artemis-1  |
infrastructure-artemis-1  | usage: artemis <command> [<args>]
infrastructure-artemis-1  |
infrastructure-artemis-1  | The most commonly used artemis commands are:
infrastructure-artemis-1  |     address    Address tools group (create|delete|update|show) (example ./artemis address create)
infrastructure-artemis-1  |     browser    It will browse messages on an instance
infrastructure-artemis-1  |     check      Check tools group (node|queue) (example ./artemis check node)
infrastructure-artemis-1  |     consumer   It will consume messages from an instance
infrastructure-artemis-1  |     create     creates a new broker instance
infrastructure-artemis-1  |     data       data tools group (print|recover) (example ./artemis data print)
infrastructure-artemis-1  |     help       Display help information
infrastructure-artemis-1  |     mask       mask a password and print it out
infrastructure-artemis-1  |     perf       Perf tools group (example ./artemis perf client)
infrastructure-artemis-1  |     producer   It will send messages to an instance
infrastructure-artemis-1  |     queue      Queue tools group (create|delete|update|stat|purge) (example ./artemis queue create)
infrastructure-artemis-1  |     transfer   Moves Messages from one destination towards another destination
infrastructure-artemis-1  |     version    print version information
infrastructure-artemis-1  |
infrastructure-artemis-1  | See 'artemis help <command>' for more information on a specific command.
infrastructure-artemis-1  |
infrastructure-artemis-1  | Running Broker
infrastructure-artemis-1  | /opt/amq/bin/launch.sh: line 47: /home/jboss/broker/bin/artemis: No such file or directory
infrastructure-artemis-1 exited with code 127

我把ARTEMIS_USERNAME改为AMQ_USER,把ARTEMIS_PASSWORD改为AMQ_PASSWORD,这样就可以了。 - Marco Coutinho
4个回答

4
我不得不在Docker中启用Rosetta,以使其正常工作。
Docker设置 → 开发功能 → 勾选 ☑ 在Apple Silicon上使用Rosetta进行x86/amd64仿真,然后重新启动Docker。

1
这就是方法 - undefined

1
尝试使用以下命令运行:
  AMQ_EXTRA_ARGS: "--nio"

这将切换IO到纯Java。在M1上,模拟不支持图像中的标准IO设置。

或者使用:

  AMQ_EXTRA_ARGS: "--nio --host 0.0.0.0 --http-host 0.0.0.0 --relax-jolokia"

否则 Jolokia 仅会绑定到容器内部的本地地址,这将允许访问控制台。

用户和密码可以通过以下方式设置:

  AMQ_USER: "admin"
  AMQ_PASSWORD: "admin"

请查看此图像的来源:https://github.com/artemiscloud/activemq-artemis-broker-image/blob/main/modules/activemq-artemis-install/added/launch.sh


0

你的docker-compose文件有问题(检查网络)。我可以用简单的一行来运行它。

docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p8161:8161 --name artemis quay.io/artemiscloud/activemq-artemis-broker

docker inspect 显示(网络)

"NetworkSettings": {
    "Bridge": "",
    "SandboxID": "fdd6c31e6e984369e592b968c7eaa465ee67233dd8d8d3d048c9fc99898089f5",
    "HairpinMode": false,
    "LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "Ports": {
        "8080/tcp": null,
        "8161/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "8161"
            },
            {
                "HostIp": "::",
                "HostPort": "8161"
            }
        ],
        "8443/tcp": null
    },

顺便说一下,我在使用Ubuntu操作系统。


2
我在使用新的Mac M1芯片时遇到了一些问题,所以需要有人也在使用M1。谢谢。 - Samovar
警告:所请求的镜像平台(linux/amd64)与检测到的主机平台(linux/arm64/v8)不匹配,并且没有请求特定平台 使用参数--user XXXXX --password XXXXX --role admin --name broker --allow-anonymous --http-host 172.17.0.2 --host 172.17.0.2 --force 创建代理 无法初始化队列:功能未实现 - Samovar
@Samovar 加上这个参数 --platform linux/amd64。 - Richard Rublev
1
无法初始化队列:功能未实现用法:artemis <command> [<args>]有关特定命令的更多信息,请参见“artemis help <command>”。运行代理 /opt/amq/bin/launch.sh: 第47行:/home/jboss/broker/bin/artemis:没有那个文件或目录你有什么想法吗?@Richard Rublev - Samovar
毫无头绪,一点也不。 - Richard Rublev
@Samovar 我也遇到了这个问题。在克隆一个带有可工作的 docker-compose 文件的 git 仓库之后(我认为通常情况下是可行的,否则它不会被合并),我遇到了这个错误。我也使用 M1 芯片。 - MC Emperor

-1
尝试将组合 HOME 变量更改为 /opt/amq

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接