1、创建openGauss5.0.3目录在目录下创建5.0.3目录和vi buildDockerImage.shbuildDockerImage.sh#!/bin/bash# Build docker image# Copyright (c) Huawei Technologies Co., Ltd. 2020-2028. 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# GaussDBKernel/server/docker/dockerfiles/buildDockerImage.sh##-------------------------------------------------------------------------usage(){catEOF Usage: buildDockerImage.sh -v [version] [-i] [Docker build option] Builds a Docker Image for openGauss Parameters: -v: version to build Choose one of:$(foriin$(ls-d*/);doecho-n${i%%/};done)-i: ignores the SHA256 checksums LICENSE UPL 1.0 EOF}# Validate packageschecksum_packages(){if[${arch}amd64];thensha256_filesha256_file_amd64elsesha256_filesha256_file_arm64fiifhashsha256sum2/dev/null;thenechoChecking if required packages are present and valid...if!sha256sum-c$sha256_file;thenechoSHA256 for required packages to build this image did not match!echoMake sure to download missing files in folder$VERSION.exit1;fielseechoIgnored SHA256 sum, sha256sum command not available.;fi}# Check Docker versioncheck_docker_version(){# Get Docker Server versionechoChecking Docker version.DOCKER_VERSION$(dockerversion--format{{.Server.Version | printf %.5s }}||exit0)# 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)echoPlease check if docker is installed.exit1elif[$docker_version_major-lt${MIN_DOCKER_VERSION_MAJOR}];thenechoDocker version is below the minimum required version$MIN_DOCKER_VERSION_MAJOR.$MIN_DOCKER_VERSION_MINORechoPlease upgrade your Docker installation to proceed.exit1;fi}################## MAIN ################### ParametersVERSION5.0.0SKIPCHECKSUM0DOCKEROPSMIN_DOCKER_VERSION_MAJOR17MIN_DOCKER_VERSION_MINOR09arch$(case$(uname -m)ini386)echo386;;i686)echo386;;x86_64)echoamd64;;aarch64)echoarm64;;esac)file_archif[$#-eq0];thenusage;exit1;fiwhilegetoptshesxiv:o:m:optname;docase$optnameinh)usageexit0;;;i)SKIPCHECKSUM1;;v)VERSION$OPTARG;;o)DOCKEROPS$OPTARG;;m)MODE$OPTARG;;?)usage;exit1;;;*)# Should not occurechoUnknown error while processing options inside buildDockerImage.sh;;esacdoneif[$MODElite];thenmodelite_elsemodefiif[${arch}amd64];thenfile_archx86_64if[-f/etc/openEuler-release];thenDOCKERFILEdockerfile_${mode}x86elseDOCKERFILEdockerfile_${mode}amdfielsefile_archaarch64DOCKERFILEdockerfile_${mode}armficheck_docker_version# openGauss Database Image NameIMAGE_NAMEopengauss:$VERSION# Go into version foldercd$VERSION||{echoCould not find version directory $VERSION;exit1;}if[!$SKIPCHECKSUM-eq1];thenchecksum_packageselseechoIgnored SHA256 checksum.fiechoechoDOCKER info:dockerinfoecho# Proxy settingsPROXY_SETTINGSif[${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!];thenechoProxy settings were found and will be used during the build.fi# ################## ## BUILDING THE IMAGE ## ################## #echoBuilding image $IMAGE_NAME ...# BUILD THE IMAGE (replace all environment variables)BUILD_START$(date%s)if[$MODE!lite];thenif[-f/etc/openEuler-release];thenopengauss_files_tar(openGauss-Server-*-openEuler22.03-${file_arch}.tar.bz2)if[[${#opengauss_files_tar[]}-ne1||!-f${opengauss_files_tar[0]}]];thenechoERROR: unable to choose server pkgecho${opengauss_files_tar[0]}exit1fiopengauss_tar${opengauss_files_tar[0]}opengauss_version$(echo${opengauss_tar}|seds/.*openGauss-Server-\(.*\)-openEuler22.03-${file_arch}.tar.bz2/\1/)elseopengauss_versionfielseif[-f/etc/openEuler-release];thenopengauss_files_tar(openGauss-Lite-*-openEuler22.03-${file_arch}.tar.gz)if[[${#opengauss_files_tar[]}-ne1||!-f${opengauss_files_tar[0]}]];thenechoERROR: unable to choose server pkgecho${opengauss_files_tar[0]}exit1fiopengauss_tar${opengauss_files_tar[0]}opengauss_version$(echo${opengauss_tar}|seds/.*openGauss-Lite-\(.*\)-openEuler22.03-${file_arch}.tar.gz/\1/)elseopengauss_versionfifiechoversion number${opengauss_version}if[!test-fscws.tar.gz];thenechoCould not find scws.tar.gz.echoIf chparser will not be used, please modify the dockerfile by removing lines containing scws.fidockerbuild --build-argVERSION$opengauss_version--force-rmtrue --no-cachetrue\$DOCKEROPS$PROXY_SETTINGS\-t$IMAGE_NAME-f$DOCKERFILE.||{echoechoERROR: openGauss Database Docker Image was NOT successfully created.echoERROR: Check the output and correct any reported problems with the docker build operation.exit1}# Remove dangling images (intermitten images with tag none)yes|dockerimage prune/dev/nullBUILD_END$(date%s)BUILD_ELAPSED$(expr$BUILD_END - $BUILD_START)echoechocatEOF openGauss Docker Image$VERSIONis ready to be extended: --$IMAGE_NAMEBuild completed in$BUILD_ELAPSEDseconds. EOF503目录下建立vi dockerfile_amdFROM centos:7.6.1810 COPY openGauss-5.0.3-CentOS-64bit.tar.bz2.COPY gosu-amd64 /usr/local/bin/gosu ENVLANGen_US.utf8#RUN yum install -y epel-releaseRUNrm-rf/etc/yum.repos.d/*.repo\echo[base]/etc/yum.repos.d/CentOS-7-Vault.repo\echonameCentOS-7.6.1810 - Base/etc/yum.repos.d/CentOS-7-Vault.repo\echobaseurlhttps://mirrors.ustc.edu.cn/centos-vault/7.6.1810/os/x86_64//etc/yum.repos.d/CentOS-7-Vault.repo\echogpgcheck1/etc/yum.repos.d/CentOS-7-Vault.repo\echogpgkeyhttps://mirrors.ustc.edu.cn/centos-vault/RPM-GPG-KEY-CentOS-7/etc/yum.repos.d/CentOS-7-Vault.repo\echoenabled1/etc/yum.repos.d/CentOS-7-Vault.repo\echo/etc/yum.repos.d/CentOS-7-Vault.repo\# echo [appstream] /etc/yum.repos.d/CentOS-7-Vault.repo \# echo nameCentOS-7.6.1810 - AppStream /etc/yum.repos.d/CentOS-7-Vault.repo \# echo baseurlhttps://mirrors.ustc.edu.cn/centos-vault/7.6.1810/os/x86_64/AppStream/ /etc/yum.repos.d/CentOS-7-Vault.repo \# echo gpgcheck1 /etc/yum.repos.d/CentOS-7-Vault.repo \# echo gpgkeyhttps://mirrors.ustc.edu.cn/centos-vault/RPM-GPG-KEY-CentOS-7 /etc/yum.repos.d/CentOS-7-Vault.repo \# echo enabled1 /etc/yum.repos.d/CentOS-7-Vault.repo \# echo /etc/yum.repos.d/CentOS-7-Vault.repo \echo[epel]/etc/yum.repos.d/CentOS-7-Vault.repo\echonameEPEL 7 Archive/etc/yum.repos.d/CentOS-7-Vault.repo\echobaseurlhttps://mirrors.ustc.edu.cn/epel-archive/7/x86_64//etc/yum.repos.d/CentOS-7-Vault.repo\echogpgcheck1/etc/yum.repos.d/CentOS-7-Vault.repo\echogpgkeyhttps://mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-7/etc/yum.repos.d/CentOS-7-Vault.repo\echoenabled1/etc/yum.repos.d/CentOS-7-Vault.repo\yum clean allyum makecache fast RUNset-eux;\yuminstall-ybzip2bzip2-develcurllibaio\groupadd-g70omm;\useradd-u70-gomm-d/home/omm omm;\mkdir-p/var/lib/opengauss\mkdir-p/usr/local/opengauss\mkdir-p/var/run/opengauss\mkdir/docker-entrypoint-initdb.d\tar-jxfopenGauss-5.0.3-CentOS-64bit.tar.bz2-C/usr/local/opengauss\chown-Romm:omm /var/run/opengausschown-Romm:omm /usr/local/opengausschown-Romm:omm /var/lib/opengausschown-Romm:omm /docker-entrypoint-initdb.d\chmod2777/var/run/opengauss\rm-rfopenGauss-5.0.3-CentOS-64bit.tar.bz2yum clean all RUNset-eux;\echoexport GAUSSHOME/usr/local/opengauss/home/omm/.bashrc\echoexport PATH\$GAUSSHOME/bin:\$PATH/home/omm/.bashrc\echoexport LD_LIBRARY_PATH\$GAUSSHOME/lib:\$LD_LIBRARY_PATH/home/omm/.bashrc ENV GOSU_VERSION1.12RUNset-eux;\chmodx /usr/local/bin/gosu ENV PGDATA /var/lib/opengauss/data COPY entrypoint.sh /usr/local/bin/ RUNchmod755/usr/local/bin/entrypoint.sh;ln-s/usr/local/bin/entrypoint.sh /# backwards compatENTRYPOINT[entrypoint.sh]EXPOSE5432CMD[gaussdb]然后去https://gitee.com/opengauss/openGauss-server/tree/master/docker/dockerfiles/7.0.0-RC2 下载gosu-amd64和entrypoint.sh去https://opengauss.org/zh/download/archive/?version5.0.3%20(LTS)下载openGauss-5.0.3-CentOS-64bit.tar.bz2然后修改docker镜像源为最新可用镜像地址vi /etc/docker/daemon.json{registry-mirrors:[https://docker.1ms.run,https://docker.xuanyuan.me,https://docker.m.daocloud.io,https://docker.mirrors.sjtug.sjtu.edu.cn],builder:{gc:{defaultKeepStorage:20GB}},experimental:false,dns:[114.114.114.114,8.8.8.8]}重启docker服务sudo systemctl daemon-reloadsudo systemctl restart docker执行镜像构建脚本sh buildDockerImage.sh -v 5.0.3 -i启动openGaussdocker run -d --name og-tmp --privilegedtrue -p 15432:5432 -e GS_USERomm -e GS_PASSWORDGauss666 opengauss:5.0.3进入容器内部docker exec -it og-tmp su - omm然后连接数据库gsql -d postgres -U omm– 创建业务账号CREATE USER dev WITH PASSWORD ‘123456’;– 兼容mysql方式创建devdb数据库CREATE DATABASE devdb DBCOMPATIBILITY‘B’;– 给账号授予库全部权限GRANT ALL PRIVILEGES ON DATABASE devdb TO dev;然后就能连接成功了然后docker save -o openGauss503.tar opengauss:5.0.3保存下镜像开始wsl里操作然后加载镜像docker load -i /mnt/f/安装包镜像等备份/docker镜像/openGauss503.tar启动容器docker run -d --name og503-dev --privilegedtrue -p 15432:5432 -e GS_USERomm -v /docker_data/og503:/var/lib/opengauss -e GS_PASSWORD123456 opengauss:5.0.3配置账户新建数据库docker exec -it og503-dev su - ommgsql -d postgres -U omm– 创建业务账号CREATE USER dev WITH PASSWORD ‘123456’;CREATE DATABASE devdb DBCOMPATIBILITY‘B’;– 给账号授予库全部权限GRANT ALL PRIVILEGES ON DATABASE devdb TO dev;– 1. 授予public这个schema的所有操作权限增删改查表、建表、索引GRANT ALL ON SCHEMA public TO dev;– 2. 授予public内 已有/未来新建 所有表、序列、视图权限GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dev;GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dev;– 3. 让dev以后在public建表时自动拥有表权限ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO dev;ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO dev;– 如果建表还是报错给 dev 开放创建 schema / 表的顶层权限GRANT CREATE, USAGE ON SCHEMA public TO dev;