代码之家  ›  专栏  ›  技术社区  ›  skyho

无法在Mac M1上的Docker容器中部署ActiveMQ Artemis

  •  -1
  • skyho  · 技术社区  · 1 年前

    我正在尝试在Mac M1上运行ActiveMQ Artemis。

    docker run --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:latest-alpine
    
    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"
    

    [错误太多,中止] 2024-02-09 20:44:26 qemu:未捕获目标信号11(分段故障)-堆芯转储

    我使用过:

    version: "3.8"
    services:
      activemq-artemis:
        container_name: artemis_simple
        image: apache/activemq-artemis:latest-alpine
        environment:
          ARTEMIS_USER: "artemis"
          ARTEMIS_PASSWORD: "artemis"
          EXTRA_ARGS: "--nio"
        ports:
          - "8161:8161"
          - "61616:61616"
       restart: unless-stopped
        networks:
          - artemis
    
    networks:
      artemis:
        driver: bridge
    

    刚开始的时候,有一些错误,但我无法连接到网络控制台

    Auto tuning journal ...
    2024-02-09 20:34:50 done! Your system can make 8.62 writes per millisecond, your journal-buffer-timeout will be 115999
    2024-02-09 20:34:50 
    2024-02-09 20:34:50 You can now start the broker by executing:  
    2024-02-09 20:34:50 
    2024-02-09 20:34:50    "/var/lib/artemis-instance/bin/artemis" run
    2024-02-09 20:34:50 
    2024-02-09 20:34:50 Or you can run the broker in the background using:
    2024-02-09 20:34:50 
    2024-02-09 20:34:50    "/var/lib/artemis-instance/bin/artemis-service" start
    ............
    
    [Too many errors, abort]
    2024-02-09 20:44:26 qemu: uncaught target signal 11 (Segmentation fault) - core dumped
    

    谁知道如何在Docker容器中的Mac M1上部署ActiveMQ Artemis?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Justin Bertram    1 年前

    错误 Cannot initialize queue:Function not implemented 是由于AIO无法在您的环境中工作而导致的 here 。因此,您需要使用NIO而不是AIO。

    但是,如果 只有 在中指定“--nio” EXTRA_ARGS 将覆盖默认值 外部ARGS(_A) (即。 --http-host 0.0.0.0 --relax-jolokia )并阻止您访问web控制台。

    我相信 [Too many errors, abort] 错误是由于平台不匹配造成的。您需要确保使用 arm64 图像变体。

    现在把它放在一起。。。

    这应该可以使用NIO,将嵌入式web服务器绑定到 0.0.0.0 因此,您可以从容器外部访问web控制台,并确保使用正确的平台:

    docker run --platform linux/arm64 -e ARTEMIS_USER=artemis -e ARTEMIS_PASSWORD=artemis -e EXTRA_ARGS="--nio --host 0.0.0.0 --http-host 0.0.0.0 --relax-jolokia" --name mycontainer -it -p 61616:61616 -p 8161:8161 apache/activemq-artemis:latest-alpine
    

    这也应该与 docker-compose :

    version: "3.8" 
    services: 
      activemq-artemis: 
        container_name: artemis_simple 
        image: apache/activemq-artemis:latest-alpine 
        environment: 
          ARTEMIS_USER: "artemis" 
          ARTEMIS_PASSWORD: "artemis" 
          EXTRA_ARGS: "--nio --host 0.0.0.0 --http-host 0.0.0.0 --relax-jolokia" 
        ports: 
          - "8161:8161" 
          - "61616:61616" 
        networks: 
          - artemis
        platform:
          "linux/arm64"
    
    networks: 
      artemis: 
        driver: bridge