通过Dockerfile编写zookeeper,rocketmq镜像

一、背景

    由于公司会用到zookeeper,rocketmq中间件,并且这些中间件在测试环境需要隔离,所以我们决定制作zookeeper,rocketmq的镜像然后在每个环境运行这些镜像就可以了,可以大大减少重复部署的操作。

二、制作zookeeper镜像

2.1 编写zookeeper镜像的Dockerfile

  1. 把解压好的zookeeper拷贝到包含jdk的centos镜像
  2. 修改/opt/zookeeper/conf/zoo.cfg配置文件
  3. 授权/opt/zookeeper所属组和所有者为zookeeper
  4. 通过zookeeper用户启动zookeeper,并把在终端打印的信息重定向到zookeeper.log
  5. 可传入位置参数执行sysinit.sh
FROM registry.moguyun.com/centos7-jdk8
MAINTAINER lijun registry.moguyun.com
ENV REFRESHED_AT 20190726

ENV ZOO_HOME /opt/zookeeper
ENV ZOO_USER zookeeper
ENV ZOO_CLUSTER 1

RUN groupadd zookeeper && useradd zookeeper -g zookeeper -s /sbin/nologin -M
RUN yum install -y telnet lsof

ADD zookeeper $ZOO_HOME
WORKDIR /opt/zookeeper
RUN echo 'sed -i "s|zk${1}-mg-addr|0.0.0.0|g" '$ZOO_HOME'/conf/zoo.cfg' >> /bin/sysinit.sh && \
    echo 'echo ${1} > '$ZOO_HOME'/data/myid' >> /bin/sysinit.sh && \
    echo "chown -R zookeeper:zookeeper $ZOO_HOME" >> /bin/sysinit.sh && \
    echo "su $ZOO_USER -s /bin/bash -c \"cd $ZOO_HOME/bin && ./zkServer.sh start-foreground | tee ../logs/zookeeper.log \"" >> /bin/sysinit.sh

EXPOSE 2181 2888 3888

CMD ["sh", "-c", "/bin/sysinit.sh $ZOO_CLUSTER"]

三、制作rocktmq镜像

3.1 编写mq-namesrv镜像Dockerfile

  1. 把解压好的rocketmq拷贝到包含jdk的centos镜像
  2. 优化xms(初始化堆内存大小),xmx(最大堆内存),xmn(年轻代大小)参数,参数调优参考: Xms,Xmx,Xmn参数调优
  3. 执行mqnamesrv启动脚本
FROM registry.moguyun.com/centos7-jdk8
MAINTAINER lijun registry.moguyun.com
ENV REFRESHED_AT 2019-08-14

ENV MQ_HOME=/opt/mq-namesrv

RUN groupadd messageQueue && useradd messageQueue -g messageQueue -s /sbin/nologin -M \
      && cd /opt && wget http://10.30.221.72/down/alibaba-rocketmq-3.2.6.tar.gz \
      && tar zxvf alibaba-rocketmq-3.2.6.tar.gz && mv alibaba-rocketmq $MQ_HOME \
      && rm alibaba-rocketmq-3.2.6.tar.gz && cd $MQ_HOME/bin \
      && sed -i "s/-Xms4g -Xmx4g -Xmn2g/-Xms2g -Xmx2g -Xmn1g/g" $MQ_HOME/bin/runserver.sh

EXPOSE 9876
CMD ["sh","/opt/mq-namesrv/bin/mqnamesrv"]

3.2 编写mq-broker镜像Dockerfile

  1. 把解压好的mq-broker目录拷贝到包含jdk的centos镜像
  2. 指定mq-namesrv的地址和启动的配置文件启动mq-broker
FROM registry.moguyun.com/centos7-jdk8
MAINTAINER lijun registry.moguyun.com
ENV REFRESHED_AT 2019-08-02

ENV MQ_HOME /opt/mq-broker
ENV MQ_NAMESRV "mq-mg-addr:9876"
ENV MQ_BROKER_CONF conf/2m-2s-async/broker-a.properties

ADD mq-broker $MQ_HOME
WORKDIR $MQ_HOME

RUN groupadd $MQ_USER && useradd $MQ_USER -g $MQ_USER -s /sbin/nologin -M && \
    echo "cat /etc/sysinit.sh" >> /etc/sysinit.sh && \
    echo "cd $MQ_HOME/bin ; sh mqbroker -n $MQ_NAMESRV -c $MQ_HOME/${1} " >> /etc/sysinit.sh

EXPOSE 10911
CMD ["sh","-c","/bin/sysinit.sh \"$MQ_BROKER_CONF\""]
发布了161 篇原创文章 · 获赞 40 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/98944548