linux下构建rocketmq-dashboard多架构镜像——筑梦之路

这篇具有很好参考价值的文章主要介绍了linux下构建rocketmq-dashboard多架构镜像——筑梦之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接上篇:linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路-CSDN博客

这里来记录下构建rocketmq-dashboard多架构镜像的方法步骤。

当前rocketmq-dashboard只有一个版本,源码地址如下:

https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0-source-release.zip

1. 编写Dockerfile文件

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

FROM centos:7

RUN yum install -y java-1.8.0-openjdk-devel.x86_64 unzip openssl, which gnupg, wget \
 && yum clean all -y

# FROM openjdk:8-jdk
# RUN apt-get update && apt-get install -y --no-install-recommends \
#  bash libapr1 unzip telnet wget gnupg ca-certificates \
# && rm -rf /var/lib/apt/lists/*

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

# RocketMQ Dashboard runs 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

# install maven 3.9.5
ARG MAVEN_VERSION=3.9.5
ARG MAVEN_DOWNLOAD_URL=https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz

RUN mkdir -p /usr/share/maven /usr/share/maven/ref && \
    wget -O /tmp/apache-maven.tar.gz ${MAVEN_DOWNLOAD_URL} --no-check-certificate && \
    tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 && \
    rm -f /tmp/apache-maven.tar.gz && \
    ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
    
### make it faster if remove those "#"s bellow
# RUN sed -i '159i \
#     <mirror> \
#       <id>nexus-tencentyun</id> \
#       <mirrorOf>*</mirrorOf> \
#       <name>Nexus tencentyun</name> \
#       <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url> \
#     </mirror> \
# ' /usr/share/maven/conf/settings.xml

RUN cat /usr/share/maven/conf/settings.xml

ENV ROCKETMQ_DASHBOARD_VERSION ${version}
ENV ROCKETMQ_DASHBOARD_HOME  /home/rocketmq/rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}
WORKDIR ${ROCKETMQ_DASHBOARD_HOME}

RUN set -eux; \
    curl -L https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/${ROCKETMQ_DASHBOARD_VERSION}/rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}-source-release.zip -o rocketmq-dashboard.zip; \
    curl -L https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/${ROCKETMQ_DASHBOARD_VERSION}/rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}-source-release.zip.asc -o rocketmq-dashboard.zip.asc; \
    wget https://www.apache.org/dist/rocketmq/KEYS --no-check-certificate; \
    \
    gpg --import KEYS; \
    gpg --batch --verify rocketmq-dashboard.zip.asc rocketmq-dashboard.zip ; \
    unzip rocketmq-dashboard.zip ; \
    rm rocketmq-dashboard.zip rocketmq-dashboard.zip.asc KEYS;
    
RUN cd rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION} ; \
    mvn -DskipTests clean install ;\
    ls -l target ; 


RUN mkdir bin; \
    mv rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}/target/rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}.jar bin/ ; \
    mv bin/rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}.jar bin/rocketmq-dashboard.jar; \
    ls -l bin; \
    rm -rf rocketmq-dashboard-${ROCKETMQ_DASHBOARD_VERSION}
    
RUN rm -rf /root/.m2/repository/*
RUN rm -rf /usr/share/maven
RUN yum remove wget unzip openssl -y

RUN chown -R ${uid}:${gid} ${ROCKETMQ_DASHBOARD_HOME}
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "bin/rocketmq-dashboard.jar"];

 这个Dockerfile太繁杂,优化的话考虑使用多阶段构建方式。

2. 编写构建脚本

#!/usr/bin/env bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

checkVersion() {
    echo "Version = $1"
	echo $1 |grep -E "^[0-9]+\.[0-9]+\.[0-9]+" > /dev/null
    if [ $? = 0 ]; then
        return 1
    fi

	echo "Version $1 illegal, it should be X.X.X format(e.g. 4.5.0), please check released versions in 'https://archive.apache.org/dist/rocketmq/'"
    exit -1
}

if [ $# -lt 2 ]; then
    echo -e "Usage: sh $0 Version BaseImage"
    exit -1
fi

ROCKETMQ_DASHBOARD_VERSION=$1
BASE_IMAGE=$2

checkVersion $ROCKETMQ_DASHBOARD_VERSION

# Build rocketmq
case "${BASE_IMAGE}" in
    centos)
        docker run --privileged --rm harbor.codemiracle.com.cn/baseapp/binfmt:latest --install all
        docker buildx create --use --name=mybuilder-rocketmq-dashboard --driver docker-container --driver-opt image=harbor.codemiracle.com.cn/baseapp/buildkit:master
        docker buildx build --no-cache -f Dockerfile-centos-dashboard --platform=linux/amd64,linux/arm64 -t harbor.codemiracle.com.cn/baseapp/rocketmq-dashboard:${ROCKETMQ_DASHBOARD_VERSION} --build-arg version=${ROCKETMQ_DASHBOARD_VERSION} . --push
        docker buildx rm mybuilder-rocketmq-dashboard
        #docker build --no-cache -f Dockerfile-centos-dashboard -t apache/rocketmq-dashboard:${ROCKETMQ_DASHBOARD_VERSION}-centos --build-arg version=${ROCKETMQ_DASHBOARD_VERSION} .
    ;;
    *)
        echo "${BASE_IMAGE} is not supported, supported base images: centos"
        exit -1
    ;;
esac

3. 如何使用

# 如何构建多架构镜像

sh  build-image-dashboard.sh [版本号]  centos

eg:
    sh build-image-dashboard.sh 1.0.0 centos

rocketmq-dashboard是一个可视化管理rocketmq的web界面工具。市面上几乎没有双架构镜像,基本上只有amd64的,通过我这个脚本可以构建支持x86 \  arm 架构的双架构镜像。文章来源地址https://www.toymoban.com/news/detail-740959.html

到了这里,关于linux下构建rocketmq-dashboard多架构镜像——筑梦之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RocketMQ, Dashboard, 控制台安装

    本文主要说明RocketMQ的控制台(Dashboard)的安装过程。工作中一直用的是别人装好的,这次终于自己亲手装了一遍。 由于每次都要启动三个应用,比较烦,于是我写了一键启动脚本,分享给大家。这个脚本可以一键启动RocketMQ的所有应用。还能自动识别应用是否已经启动成功

    2024年02月14日
    浏览(28)
  • RocketMQ、Dashboard部署以及安全设置

    RocketMQ安装包下载地址:https://rocketmq.apache.org/download 在/opt文件夹下建立rocketmq文件夹,存放rocketmq相关文件 复制RocketMQ下载路径 以当前最新版:5.1.3为例,下载链接为:https://dist.apache.org/repos/dist/release/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip 使用wget直接下载到当前路径 如果没有

    2024年02月12日
    浏览(34)
  • x86架构上构建arm64架构的docker镜像

    项目需要提供arm64架构上的centos7对应docker镜像,然后本地宿主机只有x86架构机器,因此需要在x86机器上构建centos arm64架构的docker镜像 宿主机操作系统:centos7.7 amd64架构 docker版本:19.03.15 ARM,AMD,X86,AArch64的概念可以参考: https://blog.csdn.net/Bubbler_726/article/details/88397357 下载 qemu-

    2024年02月11日
    浏览(44)
  • Dockerfile 创建镜像,构建LNMP+wordpress架构

    目录 一、Dockerfile 构建镜像 1.Dockerfile 构建 nginx镜像 1.1创建 nginx Dockerfile 目录 1.2编写 Dockerfile 文件 1.3构建nginx镜像 2.Dockerfile 构建 mysql 镜像 2.1创建 mysql Dockerfile 目录 2.2修改mysql配置文件 2.3编写 Dockerfile 文件 2.4构建mysql镜像 3.Dockerfile 构建 php 镜像 3.1创建 php Dockerfile 目录 3

    2024年02月15日
    浏览(75)
  • 【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)

    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!  公众号原文链接:MySQL 源码构建 Docker 镜像(基于 ARM 64 架构) 背景介绍 近期,笔者正推进公司 MySQL 适配 ARM 64 架构工作,由于一直使用 Docke

    2024年04月15日
    浏览(40)
  • 解决 “Function not implemented“, 为 arm64 架构宿主机重新构建 Nacos 镜像

    官方的 Nacos 镜像在 arm64 架构的系统上运行容器会出现 “Function not implemented” 的相关异常日志以致于容器内 Nacos 无法正常启动. 原因是官方镜像基于的 CentOS 7.x 的基础镜像版本并不支持 arm64 架构的系统. 其实 7.x 版本是有 arm64 支持的, 只是官方镜像并没有采用那个 platform (

    2024年02月08日
    浏览(34)
  • docker入门(Linux环境下安装Docker,Docker构建镜像)

    1.1 官方解释 Docker is the world’s leading software containerization platform。 Docker公司开发,开源,托管在github跨平台, 支持Windows、Macos、Linux。 1.2 抽象解释 2.1 集装箱-类似一个容器 没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程

    2024年02月15日
    浏览(37)
  • Spark+Kafka构建实时分析Dashboard

    Spark+Kafka构建实时分析Dashboard【林子雨】 官方实验步骤:https://dblab.xmu.edu.cn/post/spark-kafka-dashboard/ 前几天刚做完这个实验,学了不少知识,也遇到了不少问题,在这里记录一下自己的实验过程,与小伙伴们一起探讨下。 案例概述(详情见官网) (1)安装Spark 详细步骤见官网

    2024年02月13日
    浏览(36)
  • Openstack使用Dashboard进行镜像操作、管理实例等其他操作

    一、OpenStack 介绍 OpenStack为私有云和公有云提供可扩展的弹性的云计算服务云计算服务云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。 二、OpenStack 能做什么 OpenStack的主要目标是管理数据中心的资源,简化资源分配。它管理三部分

    2024年02月11日
    浏览(51)
  • 【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库

      Docker Hub是Docker官方提供的一个公共的镜像仓库,它是一个中央的存储库,用户可以在其中存储和分享Docker镜像。通过Docker Hub,用户可以方便地搜索、下载和共享Docker镜像,并可以将它们用于构建和部署容器化应用程序。Docker Hub还提供了一些其他功能,如自动构建、版本

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包