flash网站cms,我要学习做网站,dw简单的网页制作,设计师培训计划方案接上篇#xff1a;linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路-CSDN博客
这里来记录下构建rocketmq-dashboard多架构镜像的方法步骤。
当前rocketmq-dashboard只有一个版本#xff0c;源码地址如下#xff1a;
https://dist.apache.org/repos/dist/rele…接上篇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:7RUN 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 userrocketmq
ARG grouprocketmq
ARG uid3000
ARG gid3000# 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.6.3
ARG MAVEN_VERSION3.6.3
ARG MAVEN_DOWNLOAD_URLhttps://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gzRUN 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-components1 \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 \
# idnexus-tencentyun/id \
# mirrorOf*/mirrorOf \
# nameNexus tencentyun/name \
# urlhttp://mirrors.cloud.tencent.com/nexus/repository/maven-public//url \
# /mirror \
# /usr/share/maven/conf/settings.xmlRUN cat /usr/share/maven/conf/settings.xmlENV 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 -yRUN 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 $1echo $1 |grep -E ^[0-9]\.[0-9]\.[0-9] /dev/nullif [ $? 0 ]; thenreturn 1fiecho 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 ]; thenecho -e Usage: sh $0 Version BaseImageexit -1
fiROCKETMQ_DASHBOARD_VERSION$1
BASE_IMAGE$2checkVersion $ROCKETMQ_DASHBOARD_VERSION# Build rocketmq
case ${BASE_IMAGE} incentos)docker run --privileged --rm harbor.codemiracle.com.cn/baseapp/binfmt:latest --install alldocker buildx create --use --namemybuilder-rocketmq-dashboard --driver docker-container --driver-opt imageharbor.codemiracle.com.cn/baseapp/buildkit:masterdocker buildx build --no-cache -f Dockerfile-centos-dashboard --platformlinux/amd64,linux/arm64 -t harbor.codemiracle.com.cn/baseapp/rocketmq-dashboard:${ROCKETMQ_DASHBOARD_VERSION} --build-arg version${ROCKETMQ_DASHBOARD_VERSION} . --pushdocker 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: centosexit -1;;
esac
3. 如何使用
# 如何构建多架构镜像sh build-image-dashboard.sh [版本号] centoseg:sh build-image-dashboard.sh 1.0.0 centos
rocketmq-dashboard是一个可视化管理rocketmq的web界面工具。市面上几乎没有双架构镜像基本上只有amd64的通过我这个脚本可以构建支持x86 \ arm 架构的双架构镜像。