前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于最新版本rocketmq制作docker镜像全攻略纪要

基于最新版本rocketmq制作docker镜像全攻略纪要

作者头像
用户9421738
发布2024-07-02 11:12:41
4260
发布2024-07-02 11:12:41
举报
文章被收录于专栏:大数据从业者

前言

最近有个项目需要基于docker部署一个rocketmq集群。本文主要记录笔者如何根据官方工具自己动手制作最新版本rockermq的docker镜像。所谓官方工具可以通过github网站检索,具体地址:

代码语言:javascript
复制
https://github.com/apache/rocketmq-docker

项目简介

该项目是官方提供的脚本工具,用于大家自己制作所需rocketmq版本的docker镜像。从github可以看出项目Start数量638,不算少。

如果需要基于k8s运行,可以使用rocketmq-k8s-helm目录。

如果需要制作docker镜像,只需要使用image-build目录。

实战案例

1. 拉取项目源码

代码语言:javascript
复制
git clone https://github.com/apache/rocketmq-docker.git
cd rocketmq-docker/image-build/

2. build-image.sh用法

参数说明:rocketmq版本、基础镜像。

其中,基础镜像目前支持操作系统为alpine、centos。

如果需要别的操作系统,脚本里面自行修改即可。

操作系统镜像地址可以使用: https://developer.aliyun.com/mirror/

3. 详细示例

代码语言:javascript
复制
sh build-image.sh  5.1.4  centos
Error parsing reference: "eclipse-temurin:8-jdk-centos7 AS builder" is not a valid repository/tag: invalid reference format
代码语言:javascript
复制
docker --version
Docker version 1.13.1, build 7d71120/1.13.1

Docker版本太低,新特性不支持,如果环境受限,必须使用特定的低版本。可以使用笔者基于rocketmq-docker/image-build/Dockerfile-centos修改的Dockerfile-cento文件,内容如下:

代码语言:javascript
复制
[root@felixzh3 image-build]# cat Dockerfile-centos
FROM centos:7

RUN yum install -y java-1.8.0-openjdk-devel.x86_64 unzip gettext nmap-ncat openssl, which gnupg, telnet && yum clean all -y

ARG user=rocketmq
ARG group=rocketmq
ARG uid=3000
ARG gid=3000

# RocketMQ is run with user `rocketmq`, uid = 3000
# If you bind mount a volume from the host or a data container, ensure you use the same uid
RUN groupadd -g ${gid} ${group} && useradd -u ${uid} -g ${gid} -m -s /bin/bash ${user}

ARG version

# Rocketmq version
ENV ROCKETMQ_VERSION ${version}

# Rocketmq home
ENV ROCKETMQ_HOME  /home/rocketmq/rocketmq-${ROCKETMQ_VERSION}

WORKDIR  ${ROCKETMQ_HOME}

RUN set -eux; \
    curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip -o rocketmq.zip; \
    curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip.asc -o rocketmq.zip.asc; \
  
    unzip rocketmq.zip ; mv rocketmq*/* . ; rmdir rocketmq-*  ; rm rocketmq.zip

# add scripts
COPY scripts/ ${ROCKETMQ_HOME}/bin/

RUN chown -R ${uid}:${gid} ${ROCKETMQ_HOME}

# expose namesrv port
EXPOSE 9876

# add customized scripts for namesrv
RUN mv ${ROCKETMQ_HOME}/bin/runserver-customize.sh ${ROCKETMQ_HOME}/bin/runserver.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/runserver.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/mqnamesrv

# expose broker ports
EXPOSE 10909 10911 10912

# add customized scripts for broker
RUN mv ${ROCKETMQ_HOME}/bin/runbroker-customize.sh ${ROCKETMQ_HOME}/bin/runbroker.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/runbroker.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/mqbroker

# export Java options
RUN export JAVA_OPT=" -Duser.home=/opt"

# Add ${JAVA_HOME}/lib/ext as java.ext.dirs
RUN sed -i 's/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/' ${ROCKETMQ_HOME}/bin/tools.sh

USER ${user}

WORKDIR ${ROCKETMQ_HOME}/bin

也可以卸载安装新版本:

代码语言:javascript
复制
yum remove docker*
yum install -y yum-utils device-mapper-persistent-data lvm2    
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast && yum -y install docker-ce
代码语言:javascript
复制
docker --version
Docker version 25.0.2, build 29cf629

重新执行

代码语言:javascript
复制
sh build-image.sh  5.1.4  centos

需要等待几分钟,通过docker images可以看到制作出来的镜像,如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据从业者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实战案例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档