使用Dockerfile制作RocketMq的Docker镜像(任意版本)

使用dockerfile制作任意版本的docker镜像

1、Dockerfile

创建文件rocketmq

#FROM openjdk:8
FROM java8:1.0
#上面的基础镜像可以自己  docker pull 
LABEL "作者"=aaaaa

ENV ROCKETMQ_VERSION 5.1.3
# ENV LANG en_US.UTF-8

ENV ROCKETMQ_HOME="/home/rocketmq/rocketmq-${ROCKETMQ_VERSION}"

WORKDIR ${ROCKETMQ_HOME}

#ENV TIME_ZONE Asia/Shanghai

#RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime
# 上面是处理乱码的,可以根据自己实际情况来。

RUN curl https://dist.apache.org/repos/dist/release/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip -o rocketmq.zip \
    && unzip rocketmq.zip \
    && rm -f rocketmq.zip \
    && ls \
    && mv rocketmq-all-${ROCKETMQ_VERSION}-bin-release/* ./ \
    && rm -rf rocketmq-all-${ROCKETMQ_VERSION}-bin-release \
    && cd ${ROCKETMQ_HOME}/bin \
    #下面三行是namesrv用到的,写死了默认的jvm参数,如果不想使用默认的,可以在启动的时候自己添加JAVA_OPT的参数。
    && sed -i 's#-Xms[0-9]\+[gm]#-Xms512m#g' runserver.sh \
    && sed -i 's#-Xmx[0-9]\+[gm]#-Xmx512m#g' runserver.sh \
    && sed -i 's#-Xmn[0-9]\+[gm]#-Xmn128m#g' runserver.sh \
    #下面两行是为了处理5.1.3版本用到的,4.9.7不需要。因为5.1.3的启动脚本有变动,需要用到javac和which。我的没有这俩命令,所以给注释掉了。 
    && sed -i "s/find_java_home$/#find_java_home/" runserver.sh \
    && sed -i "s/find_java_home$/#find_java_home/" runbroker.sh \
    #上面两行是为了处理5.1.3版本用到的,4.9.7不需要。因为5.1.3的启动脚本有变动,需要用到javac和which。我的没有这俩命令,所以给注释掉了。
    #下面两行是broker用到的,写死了默认的jvm参数,如果不想使用默认的,可以在启动的时候自己添加JAVA_OPT的参数。    
    && sed -i 's#-Xms[0-9]\+[gm]#-Xms512m#g' runbroker.sh \
    && sed -i 's#-Xmx[0-9]\+[gm]#-Xmx512m#g' runbroker.sh \
    && sed -i 's#-XX:MetaspaceSize=[0-9]\+[gm]#-XX:MetaspaceSize=128m#' runserver.sh \
    && sed -i 's#-XX:MaxMetaspaceSize=[0-9]\+[gm]#-XX:MaxMetaspaceSize=320m#' runserver.sh

ENV ROCKETMQ="/home/rocketmq/rocketmq-${ROCKETMQ_VERSION}/bin"
WORKDIR ${ROCKETMQ}

2、打包镜像

docker build -f rocketmq -t rocketmq:5.1.3 .

3、相关配置

namesrv的日志默认为

/root/logs

这个是默认的,可以修改成自己想要的,可以在容器运行后,直接修改,然后docker commit保存下来。
broker的有两个

/root/logs
/root/store

上述三个目录,有需要的可以挂载到宿主机目录进行持久化。

4、启动

docker启动或k8s启动,启动命令主要是

sh ./mqnamesrv
sh ./mqbroker

#绝对路径为/home/rocketmq/rocketmq-${ROCKETMQ_VERSION}-bin

注意事项

1、容器运行后,执行报错
Operation not permitted
解决方案:docker run命令中,添加–privileged参数
k8s则需要给容器的spec指定securityContext.privileged=true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值