全网独家:基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器

近期想测试一下opengauss数据库,官网上单机容器部署只有x86-64平台CentOS 7.6和ARM64平台 openEuler20.03 LTS两种底包方案。本文系全网独家在x86平台上基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器。

opengauss官网上单机容器部署只有x86-64平台CentOS 7.6和ARM64平台 openEuler20.03 LTS两种方案:

本文探索在 x86-64  openEuler20.03 LTS容器底包上进行数据库容器打包。

一、基础环境

1、宿主机环境

 宿主机为x86平台,操作系统为openEuler 22.03 LTS

# cat /etc/os-release 
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"
2、容器底包

openeuler-20.03-lts:latest

# docker images 
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
openeuler-20.03-lts   latest              eeb84ae20ad2        3 years ago         469MB
3、openGauss版本

如下:x86-64架构、操作系统openeuler-20.03-lts、openGauss——5.0.1企业版安装包

 该文件的SHA256值为:c4687aa6bb02ffc1402b972a01a2515ba8524def624f4c8227c40dcaf38aa9e4

openGauss-5.0.1-openEuler-64bit-all.tar.gz

4、下载安装程序脚本

下载官方安装程序

直接下载链接

二、打包环境准备

1、准备目录和数据库安装包、容器repo源
# mkdir -p dockerfiles/5.0.1
# wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.1/x86_openEuler/openGauss-5.0.1-openEuler-64bit-all.tar.gz
# sha256sum openGauss-5.0.1-openEuler-64bit-all.tar.gz >sha256_file_amd64
# mv openGauss-5.0.1-openEuler-64bit-all.tar.gz sha256_file_amd64 dockerfiles
# wget https://mirrors.huaweicloud.com/repository/conf/openeuler_x86_64.repo
# mv openeuler_x86_64.repo dockerfiles/5.0.1
2、准备安装脚本

将前面下载的官方安装程序包解压,拷贝文件到相应目录

buildDockerImage.sh------当前目录

dockerfiles目录下应有以下文件:

dockerfile_amd
entrypoint.sh
generatexml.py
gosu-amd64
gs_createtrust.py
install.sh
openGauss-5.0.1-openEuler-64bit-all.tar.gz   (本文件是上一步下载并转移过来的)
sha256_file_amd64                                         (本文件是上一步生成的)
util.sh

完成后的目录结构:

# tree 
.
├── buildDockerImage.sh
└── dockerfiles
    ├── 5.0.1
    │   └── openeuler_x86_64.repo
    ├── dockerfile_amd
    ├── entrypoint.sh
    ├── generatexml.py
    ├── gosu-amd64
    ├── gs_createtrust.py
    ├── install.sh
    ├── openEuler-20.03-LTS.tar.xz
    ├── openGauss-5.0.1-openEuler-64bit-all.tar.gz
    ├── sha256_file_amd64
    └── util.sh

3、修改dockerfiles/dockerfile_amd文件

修改后内容如下:

# vi dockerfiles/dockerfile_amd 
# cat dockerfiles/dockerfile_amd 
FROM openeuler-20.03-lts:latestENV OPENGAUSS_VERSION 5.0.1COPY openGauss-${OPENGAUSS_VERSION}-openEuler-64bit-all.tar.gz .
COPY gosu-amd64 /usr/local/bin/gosu
COPY gs_createtrust.py .
ENV LANG en_US.utf8
COPY 5.0.1/openeuler_x86_64.repo /etc/yum.repos.d/openeuler_x86_64.repoRUN set -eux; \  yum install -y bzip2 bzip2-devel curl libaio readline-devel expect which git python3 python3-devel openssl-devel net-tools openssh-server vim shadow && \  /usr/sbin/groupadd -g 70 omm; \  /usr/sbin/useradd -u 70 -g omm -d /home/omm omm; \  mkdir -p /opengauss && \  chmod 700 /opengauss && \  mv openGauss-${OPENGAUSS_VERSION}-openEuler-64bit-all.tar.gz /opengauss && \  mv gs_createtrust.py /opengauss && \  mkdir -p /volume && \  chmod -R 755 /volume && \  chown -R omm:omm /opengaussENV LANG en_US.utf8ENV GOSU_VERSION 1.12
RUN set -eux; \chmod +x /usr/local/bin/gosuCOPY entrypoint.sh /usr/local/bin/
COPY entrypoint.sh /usr/local/bin/
COPY install.sh /usr/local/bin/
COPY util.sh /usr/local/bin/
COPY generatexml.py /usr/local/bin/
RUN chmod 755 /usr/local/bin/entrypoint.sh;ln -s /usr/local/bin/entrypoint.sh /
RUN chmod 755 /usr/local/bin/install.sh;ln -s /usr/local/bin/install.sh /
RUN chmod 755 /usr/local/bin/util.sh;ln -s /usr/local/bin/util.sh /
RUN chmod 755 /usr/local/bin/generatexml.py /ENTRYPOINT ["entrypoint.sh"]EXPOSE 5432
4、修改buildDockerImage.sh文件

改后的内容如下:

#!/bin/bash
# Build docker image
# Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved.
#
#openGauss is licensed under Mulan PSL v2.
#You can use this software according to the terms and conditions of the Mulan PSL v2.
#You may obtain a copy of Mulan PSL v2 at:
#
#          http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
#-------------------------------------------------------------------------
#
# buildDockerImage.sh
#    Build docker image
#
# IDENTIFICATION
#    openGauss-container/buildDockerImage.sh
#
#-------------------------------------------------------------------------usage() {cat << EOFUsage: buildDockerImage.sh -v [version]  [-i]  [Docker build option]
Builds a Docker Image for openGaussParameters:-v: version to build-i: ignores the SHA256 checksumsLICENSE MulanPSL2EOF}# Validate packages
checksum_packages() {
if [ "${arch}" = "amd64" ]; thensha256_file="sha256_file_amd64"elsesha256_file="sha256_file_arm64"
fiif hash sha256sum 2>/dev/null; thenecho "Checking if required packages are present and valid..."   if ! sha256sum -c "$sha256_file"; thenecho "SHA256 for required packages to build this image did not match!"echo "Make sure to download missing files in folder $VERSION."exit 1;fielseecho "Ignored SHA256 sum, 'sha256sum' command not available.";fi
}# Check Docker version
check_docker_version() {# Get Docker Server versionecho "Checking Docker version."DOCKER_VERSION=$(docker version --format '{{.Server.Version | printf "%.5s" }}'|| exit 0)# Remove dot in Docker versiondocker_version_major=$(echo $DOCKER_VERSION | awk -F . '{print $1}')if [ -z "$DOCKER_VERSION" ]; then# docker could be aliased to podman and errored out (https://github.com/containers/libpod/pull/4608)echo "Please check if docker is installed." && exit 1elif [ "$docker_version_major" -lt "${MIN_DOCKER_VERSION_MAJOR}" ]; thenecho "Docker version is below the minimum required version $MIN_DOCKER_VERSION_MAJOR.$MIN_DOCKER_VERSION_MINOR"echo "Please upgrade your Docker installation to proceed."exit 1;fi
}##############
#### MAIN ####
############### Parameters
VERSION="5.0.1"
SKIPCHECKSUM=0
DOCKEROPS=""
MIN_DOCKER_VERSION_MAJOR="17"
MIN_DOCKER_VERSION_MINOR="09"
arch=$(case $(uname -m) in i386)   echo "386" ;; i686)   echo "386" ;; x86_64) echo "amd64";; aarch64)echo "arm64";; esac)
if [ "${arch}" = "amd64" ]; thenDOCKERFILE="dockerfile_amd"elseDOCKERFILE="dockerfile_arm"
fiif [ "$#" -eq 0 ]; thenusage;exit 1;
fiwhile getopts "hesxiv:o:" optname; docase "$optname" in"h")usageexit 0;;;"i")SKIPCHECKSUM=1;;"v")VERSION="$OPTARG";;"o")DOCKEROPS="$OPTARG";;"?")usage;exit 1;;;*)# Should not occurecho "Unknown error while processing options inside buildDockerImage.sh";;esac
donecheck_docker_version# openGauss Database Image Name
IMAGE_NAME="opengauss:$VERSION"# check package exist
if [ "`ls dockerfiles/ |grep openGauss-${VERSION}`" == "" ]; thenecho "Could not find openGauss $VERSION package.";exit 1;
ficd dockerfiles/if [ ! "$SKIPCHECKSUM" -eq 1 ]; thenchecksum_packages
elseecho "Ignored SHA256 checksum."
fi
echo "=========================="
echo "DOCKER info:"
docker info
echo "=========================="# Proxy settings
PROXY_SETTINGS=""
if [ "${http_proxy}" != "" ]; thenPROXY_SETTINGS="$PROXY_SETTINGS --build-arg http_proxy=${http_proxy}"
fiif [ "${https_proxy}" != "" ]; thenPROXY_SETTINGS="$PROXY_SETTINGS --build-arg https_proxy=${https_proxy}"
fiif [ "${ftp_proxy}" != "" ]; thenPROXY_SETTINGS="$PROXY_SETTINGS --build-arg ftp_proxy=${ftp_proxy}"
fiif [ "${no_proxy}" != "" ]; thenPROXY_SETTINGS="$PROXY_SETTINGS --build-arg no_proxy=${no_proxy}"
fiif [ "$PROXY_SETTINGS" != "" ]; thenecho "Proxy settings were found and will be used during the build."
fi# ################## #
# BUILDING THE IMAGE #
# ################## #
echo "Building image '$IMAGE_NAME' ..."# BUILD THE IMAGE (replace all environment variables)
BUILD_START=$(date '+%s')
docker build --force-rm=true --no-cache=true \$DOCKEROPS $PROXY_SETTINGS  \-t $IMAGE_NAME -f $DOCKERFILE . || {echo ""echo "ERROR: openGauss Database

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快&#xff0c;人们越来越注重健康与放松。按摩作为传统的舒缓方式&#xff0c;市场需求逐年上升。然而&#xff0c;传统的按摩服务预约方式较为繁琐&#xff0c;用户需拨打热线电话或前往实体店进行预约&#xff0c;这无疑增加了用户的操作成本。因此&#xf…

C#的checked关键字判断是否溢出

目录 一、定义 二、示例&#xff1a; 三、生成&#xff1a; 一、定义 使用checked关键字处理溢出。 在进行数学运算时&#xff0c;由于变量类型不同&#xff0c;数值的值域也有所不同。如果变量中的数值超出了变量的值域&#xff0c;则会出现溢出情况&#xff0c;出现溢出…

【ModelScope】从入门到进阶

计算机视觉任务 任务&#xff08;Task&#xff09;中文任务&#xff08;Task&#xff09;英文任务说明单标签图像分类image-classification对图像中的不同特征根据类别进行区分通用图像分割image-segmentation识别图像主体与图像背景进行分离文字检测ocr-detection将图像中的文…

03-微服务-Ribbon负载均衡

Ribbon负载均衡 1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件&#xff0c;来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1&#xff0c;怎么变成了http://localhost:8081的呢&#xff1f; 1.2.源码跟踪 为什么我们只输入…

汉诺塔问题(递归超详细)C++,leetcode

文章目录 前言一、题目分析二、算法原理1.为什么要用递归2.如何编写代码 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下汉诺塔问题&#xff0c;本题目我们采用递归的方式解决相关的内容 一、题目分析 题目要求详解&#xff1a;   &#x1f31f; 有三个…

css原子化的框架Tailwindcss的使用教程(原始html和vue项目的安装与配置)

安装教程 中文官网教程 原始的HTML里面使用 新建文件夹npm init -y 初始化项目 安装相关依赖 npm install -D tailwindcss postcss-cli autoprefixer初始化两个文件 npx tailwindcss init -p根目录下新建src/style.css tailwind base; tailwind components; tailwind ut…

【python入门】day12:bug及其处理思路

bug的常见类型 粗心 / 没有好习惯 思路不清 lst[{rating:[9.7,2062397],id:1292052,type:[犯罪,剧情],title:肖申克的救赎,actors:[蒂姆罗宾斯,摩根弗里曼]},{rating:[9.6,1528760],id:1291546,type:[剧情,爱情,同性],title:霸王别姬,actors:[张国荣 ,张丰毅 , 巩俐 ,葛优]},{r…

卷麻了,00后测试用例写的比我还好,简直无地自容...........

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 如何编写测试用例&#xff1f; 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很是头疼&#xff0c;无法…

linux性能优化

文章目录 性能优化图CPU进程和cpu原理性能指标 性能优化图 CPU 进程和cpu原理 进程与线程&#xff1a; 进程是程序的执行实例&#xff0c;有自己的地址空间和系统资源。线程是进程内的执行单元&#xff0c;共享进程的资源。在多核系统中&#xff0c;使用多线程可以更好地利用多…

Web 自动化测试过程中会遇到哪些问题?

作者&#xff1a;木可 链接&#xff1a;https://www.zhihu.com/question/636965892/answer/3341410674 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Web自动化是指使用测试脚本来自动执行网页上的任务。这包括填…

mybatis快速批量插入工具类

代码示例&#xff1a; package com.ly.cloud.util; import java.util.List;import javax.annotation.PostConstruct; import javax.annotation.Resource;import com.google.common.collect.Lists; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.s…

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…

派可数据BI 助力生产企业数字化质量管理,全面提升产品品质

在制造业中&#xff0c;出了质量问题&#xff0c;生产和质检部的同事都先抱怨。大家觉得质量问题是品控部门的问题&#xff0c;生产质量有瑕疵&#xff0c;检验人员就要负责。而检验人员又觉得&#xff0c;品质是生产出来的&#xff0c;而不是检验出来的&#xff0c;只有在生产…

服务器为什么大多用 Linux?

服务器为什么大多用 Linux&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…

1.3 金融数据可视化

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1.1 编程基础   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas 1.2 金融数据处理 1.3 金融数据可视化 文章目录 1. 金融数据可视化1.1. matplotlib1.1.1. 沪深300走势图1.1.2. 日线均线…

计算机网络-动态路由

网络层协议&#xff1a;ip&#xff0c;ospf&#xff0c;rip&#xff0c;icmp共同组成网络层体系 ospf用于自治系统内部。 一个路由器或者网关需要能够支持多个不同的路由协议&#xff0c;以适应不同的网络环境。特别是在连接不同自治系统的边缘路由器或边界网关的情况下&#…

Qt之自定义分页(翻页)控件

当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。 一.效果 每页15个姓氏。 二.实现 QHPageWidget.h #ifndef QHPAGEWIDGET_H #define QHPAGEWIDGET_H#include <QWidget> #include <QStandardItemMod…

Docker安装Elasticsearch,kibana,ik分词器

安装elasticsearch 下载elasticsearch&#xff0c;查看版本&#xff1a;Elasticsearch Guide [8.11] | Elastic docker pull elasticsearch:7.17.16 查看镜像是否下载成功 docker images 创建网络&#xff0c;因为需要部署kibana容器&#xff0c;要让es和kibana容器互联 …

Linuk安装Prometheus+grafana监控

Linuk安装Prometheusgrafana监控 文章目录 Linuk安装Prometheusgrafana监控服务器环境配置1.prometheus监控框架工具介绍2.Prometheus 源码安装和启动配置2.1 下载2.2安装2.3默认prometheus.yml 配置解释2.4直接启动服务2.5 访问http://localhost:90902.6将Prometheus配置为系统…

webRTC实时通信demo

参考文档&#xff1a; https://www.jianshu.com/p/f439ce5cc0be https://www.w3cschool.cn/socket demo流程示意图&#xff08;用户A向用户B推送视频&#xff09;&#xff1a; #mermaid-svg-0KZaDQ5DBl28zjmZ {font-family:"trebuchet ms",verdana,arial,sans-seri…