ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用docker快速构建ActiveMQ

2022-06-15 18:35:05  阅读:292  来源: 互联网

标签:xml opt 8161 ActiveMQ 构建 5.17 apache 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,进去之后大概是这样子的:

   

 

标签:xml,opt,8161,ActiveMQ,构建,5.17,apache,docker,activemq
来源: https://www.cnblogs.com/shanfeng1000/p/16261005.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有