• 使用docker快速构建ActiveMQ


      鉴于官方没有推出activemq的官方镜像,所以我们需要自己来制作了,先来一波准备工作:

      准备工作

      首先需要去官网下载activemq,地址:https://archive.apache.org/dist/activemq/5.17.1/

      比如这里我选择了5.17.1版本:

      

      因为activemq需要java的运行环境,所以还需要去下载jdk或者jre,地址:https://www.oracle.com/java/technologies/downloads/

      貌似从5.17开始,activemq需要高版本的jdk支持了,所以这里我选择jdk18:

      

      开始构建

      为了偷懒,我决定采用docker-compose来编排:

      最开始,我们的目录是这样子的:

      

      接着,执行下面的命令:  

        # 解压得到activemq.xml和jetty.xml两个配置文件
        tar -zxf apache-activemq-5.17.1-bin.tar.gz apache-activemq-5.17.1/conf/activemq.xml apache-activemq-5.17.1/conf/jetty.xml && \
        mv apache-activemq-5.17.1/conf/* ./ && \
        rm -rf apache-activemq-5.17.1
        # 上海的时区
        cp /usr/share/zoneinfo/Asia/Shanghai ./

      现在,我们的目录是这个样子的:

      

      这里,我们把activemq的两个主要配置弄出来了,当然是要修改它了:

      修改activemq.xml,在里面的broker节点下添加认证用户信息,这个用户是我们使用代码连接使用activemq的那个认证用户:  

        <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
            
            <!--broker其它配置-->
            
            <plugins>
                <simpleAuthenticationPlugin>
                    <users>
                         <authenticationUser username="test" password="123456" groups="users,admins"/>
                    </users>
                </simpleAuthenticationPlugin>
             </plugins>
        </broker>

      修改jetty.xml,activemq的web管理后台默认是本地127.0.0.1启动,这样外面就没办法访问了,修改名称为jettyPort的bean的host属性为0.0.0.0:  

        <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
                 <!-- the default port number for the web console -->
            <property name="host" value="0.0.0.0"/>
            <property name="port" value="8161"/>
        </bean>

      好了,至于其它配置,可以按照自己的需求来,接着外面创建一个Dockerfile:  

        FROM ubuntu:latest
    
        WORKDIR /opt
    
        ADD *.tar.gz /opt/
    
        COPY Shanghai /usr/share/zoneinfo/Asia/Shanghai
    
        RUN mv /opt/jdk* /opt/jdk && \
            mv /opt/apache-activemq* /opt/apache-activemq && \
            ln -s /opt/jdk/bin/java /usr/bin/java && \
            rm -f /etc/localtime && \
            ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
        EXPOSE 61616 
        EXPOSE 5672
        EXPOSE 61613
        EXPOSE 1883
        EXPOSE 61614
        EXPOSE 8161
    
        USER root
    
        CMD [ "/opt/apache-activemq/bin/activemq", "console" ]

      这里我是基于ubuntu:latest来构建的,当然也可以是centos

      接着我们创建一个docker-compose.yml:

    docker-compose.yml
    # yaml 配置
    version: '2'
    services:
      activemq:
        build: .
        image: activemq:v1
        container_name: activemq
        restart: always
        expose:
          - 61616
          - 8161
        ports:
          - 61616:61616
          #- 5672:5672
          - 61613:61613
          - 1883:1883
          - 61614:61614
          - 8161:8161
        volumes:
          - ./activemq.xml:/opt/apache-activemq/conf/activemq.xml
          - ./jetty.xml:/opt/apache-activemq/conf/jetty.xml
    networks:
      default:
        driver: bridge

       这里我将activemq.xml和jetty.xml两个配置文件使用数据卷将他们关联起来了。

      此外,我这里将宿主机的61616和8161端口做了端口映射,61616是OpenWrite协议端口,8161是管理后台端口,如果要开放其它端口,如amqp的5672,可以类似的添加即可,但是需要注意的是,rabbitmq默认也是使用5672作为amqp协议的端口,所以可能会出现端口冲突。

      好了,最后我们的目录是这样子的:

      

      接着,我们就可以使用docker-compose来启动了:  

        sudo docker-compose up -d

      然后等待片刻,容器起来后,在浏览器中访问宿主机的8161端口(比如我的是:http://192.168.139.128:8161/),可能会要求输入账号密码,这里账号密码默认都是admin,进去之后大概是这样子的:

       

  • 相关阅读:
    Mybatis-Plus select不列出全部字段
    git合并之 merge和rebase
    git
    springboot缓存开发
    关于Maven打包
    邮件发送模型及其Python应用实例
    Python 日志模块的定制
    python 解析 XML文件
    有限状态机FSM详解及其实现
    动态规划
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/16261005.html
Copyright © 2020-2023  润新知