From 9577c88dc2e8b6ced0ae79a42af789b2db3e5a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=94=A6=E6=B3=A2?= <570157209@qq.com> Date: Mon, 14 Apr 2025 11:36:12 +0800 Subject: [PATCH] docker pkg script --- .../{5.0.0 => 6.0.0}/dockerfile_amd | 6 +- .../{5.0.0 => 6.0.0}/dockerfile_arm | 19 +++-- docker/dockerfiles/6.0.0/dockerfile_lite_arm | 52 ++++++++++++++ docker/dockerfiles/6.0.0/dockerfile_lite_x86 | 52 ++++++++++++++ docker/dockerfiles/6.0.0/dockerfile_x86 | 50 ++++++++++++++ .../{5.0.0 => 6.0.0}/entrypoint.sh | 15 +++- .../dockerfiles/{5.0.0 => 6.0.0}/gosu-amd64 | Bin .../dockerfiles/{5.0.0 => 6.0.0}/gosu-arm64 | Bin .../{5.0.0 => 6.0.0}/openEuler_aarch64.repo | 0 .../{5.0.0 => 6.0.0}/sha256_file_amd64 | 0 .../{5.0.0 => 6.0.0}/sha256_file_arm64 | 0 docker/dockerfiles/buildDockerImage.sh | 65 ++++++++++++++++-- 12 files changed, 241 insertions(+), 18 deletions(-) rename docker/dockerfiles/{5.0.0 => 6.0.0}/dockerfile_amd (84%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/dockerfile_arm (69%) create mode 100644 docker/dockerfiles/6.0.0/dockerfile_lite_arm create mode 100644 docker/dockerfiles/6.0.0/dockerfile_lite_x86 create mode 100644 docker/dockerfiles/6.0.0/dockerfile_x86 rename docker/dockerfiles/{5.0.0 => 6.0.0}/entrypoint.sh (97%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/gosu-amd64 (100%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/gosu-arm64 (100%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/openEuler_aarch64.repo (100%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/sha256_file_amd64 (100%) rename docker/dockerfiles/{5.0.0 => 6.0.0}/sha256_file_arm64 (100%) diff --git a/docker/dockerfiles/5.0.0/dockerfile_amd b/docker/dockerfiles/6.0.0/dockerfile_amd similarity index 84% rename from docker/dockerfiles/5.0.0/dockerfile_amd rename to docker/dockerfiles/6.0.0/dockerfile_amd index 56458181ff..2edcb5cc4b 100644 --- a/docker/dockerfiles/5.0.0/dockerfile_amd +++ b/docker/dockerfiles/6.0.0/dockerfile_amd @@ -1,6 +1,6 @@ FROM centos:7.6.1810 -COPY openGauss-5.0.0-CentOS-64bit.tar.bz2 . +COPY openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2 . COPY gosu-amd64 /usr/local/bin/gosu ENV LANG en_US.utf8 @@ -15,10 +15,10 @@ RUN set -eux; \ mkdir -p /usr/local/opengauss && \ mkdir -p /var/run/opengauss && \ mkdir /docker-entrypoint-initdb.d && \ - tar -jxf openGauss-5.0.0-CentOS-64bit.tar.bz2 -C /usr/local/opengauss && \ + tar -jxf openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2 -C /usr/local/opengauss && \ chown -R omm:omm /var/run/opengauss && chown -R omm:omm /usr/local/opengauss && chown -R omm:omm /var/lib/opengauss && chown -R omm:omm /docker-entrypoint-initdb.d && \ chmod 2777 /var/run/opengauss && \ - rm -rf openGauss-5.0.0-CentOS-64bit.tar.bz2 && yum clean all + rm -rf openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2 && yum clean all RUN set -eux; \ echo "export GAUSSHOME=/usr/local/opengauss" >> /home/omm/.bashrc && \ diff --git a/docker/dockerfiles/5.0.0/dockerfile_arm b/docker/dockerfiles/6.0.0/dockerfile_arm similarity index 69% rename from docker/dockerfiles/5.0.0/dockerfile_arm rename to docker/dockerfiles/6.0.0/dockerfile_arm index d99dc45a4b..7621de3242 100644 --- a/docker/dockerfiles/5.0.0/dockerfile_arm +++ b/docker/dockerfiles/6.0.0/dockerfile_arm @@ -1,8 +1,13 @@ -FROM openeuler-20.03-lts:latest +FROM openeuler/openeuler:20.03-lts -COPY openGauss-5.0.0-openEuler-64bit.tar.bz2 . +ARG VERSION=6.0.1 + +COPY openGauss-Server-${VERSION}-openEuler20.03-aarch64.tar.bz2 . COPY gosu-arm64 /usr/local/bin/gosu COPY openEuler_aarch64.repo /etc/yum.repos.d/openEuler_aarch64.repo +# remove all lines containing scws if do no want to chparser# +COPY scws.tar.gz . + ENV LANG en_US.utf8 #RUN yum install -y epel-release @@ -15,21 +20,25 @@ RUN set -eux; \ mkdir -p /usr/local/opengauss && \ mkdir -p /var/run/opengauss && \ mkdir /docker-entrypoint-initdb.d && \ - tar -jxf openGauss-5.0.0-openEuler-64bit.tar.bz2 -C /usr/local/opengauss && \ + tar -jxf openGauss-Server-${VERSION}-openEuler20.03-aarch64.tar.bz2 -C /usr/local/opengauss && \ chown -R omm:omm /var/run/opengauss && chown -R omm:omm /usr/local/opengauss && chown -R omm:omm /var/lib/opengauss && chown -R omm:omm /docker-entrypoint-initdb.d && \ chmod 2777 /var/run/opengauss && \ - rm -rf openGauss-5.0.0-openEuler-64bit.tar.bz2 && yum clean all + rm -rf openGauss-Server-${VERSION}-openEuler20.03-aarch64.tar.bz2 && \ + tar -xzvf scws.tar.gz; chown -R omm:omm /scws; rm -rf scws.tar.gz && \ + chmod 1777 /tmp && \ + yum clean all RUN set -eux; \ echo "export GAUSSHOME=/usr/local/opengauss" >> /home/omm/.bashrc && \ echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omm/.bashrc && \ echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc +RUN set -eux; echo "export TMOUT=0 >> /etc/bashrc" + ENV GOSU_VERSION 1.12 RUN set -eux; \ chmod +x /usr/local/bin/gosu - ENV PGDATA /var/lib/opengauss/data COPY entrypoint.sh /usr/local/bin/ diff --git a/docker/dockerfiles/6.0.0/dockerfile_lite_arm b/docker/dockerfiles/6.0.0/dockerfile_lite_arm new file mode 100644 index 0000000000..288ab9575f --- /dev/null +++ b/docker/dockerfiles/6.0.0/dockerfile_lite_arm @@ -0,0 +1,52 @@ +FROM openeuler/openeuler:20.03-lts + +ARG VERSION=6.0.1 + +COPY openGauss-Lite-${VERSION}-openEuler20.03-aarch64.tar.gz . +COPY gosu-arm64 /usr/local/bin/gosu +COPY openEuler_aarch64.repo /etc/yum.repos.d/openEuler_aarch64.repo +# remove all lines containing scws if do no want to chparser# +COPY scws.tar.gz . + +ENV LANG en_US.utf8 + +#RUN yum install -y epel-release + +RUN set -eux; \ + yum install -y bzip2 curl libaio shadow tar&& \ + groupadd -g 70 omm; \ + useradd -u 70 -g omm -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 -xf openGauss-Lite-${VERSION}-openEuler20.03-aarch64.tar.gz -C /usr/local/opengauss && \ + tar -xf /usr/local/opengauss/openGauss-Lite-${VERSION}-openEuler20.03-aarch64.bin -C /usr/local/opengauss && \ + chown -R omm:omm /var/run/opengauss && chown -R omm:omm /usr/local/opengauss && chown -R omm:omm /var/lib/opengauss && chown -R omm:omm /docker-entrypoint-initdb.d && \ + chmod 2777 /var/run/opengauss && \ + rm -rf openGauss-Lite-${VERSION}-openEuler20.03-aarch64.tar.gz && \ + rm -rf openGauss-Lite-${VERSION}-openEuler20.03-aarch64.bin && \ + tar -xzvf scws.tar.gz; chown -R omm:omm /scws; rm -rf scws.tar.gz && \ + chmod 1777 /tmp && \ + yum clean all + +RUN set -eux; \ + echo "export GAUSSHOME=/usr/local/opengauss" >> /home/omm/.bashrc && \ + echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omm/.bashrc && \ + echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc + +RUN set -eux; echo "export TMOUT=0 >> /etc/bashrc" + +ENV GOSU_VERSION 1.12 +RUN set -eux; \ + chmod +x /usr/local/bin/gosu + +ENV PGDATA /var/lib/opengauss/data + +COPY entrypoint.sh /usr/local/bin/ +RUN chmod 755 /usr/local/bin/entrypoint.sh;ln -s /usr/local/bin/entrypoint.sh / # backwards compat + +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 5432 +CMD ["gaussdb"] diff --git a/docker/dockerfiles/6.0.0/dockerfile_lite_x86 b/docker/dockerfiles/6.0.0/dockerfile_lite_x86 new file mode 100644 index 0000000000..8c1d08a883 --- /dev/null +++ b/docker/dockerfiles/6.0.0/dockerfile_lite_x86 @@ -0,0 +1,52 @@ +FROM openeuler/openeuler:20.03-lts + +ARG VERSION=6.0.1 + +COPY openGauss-Lite-${VERSION}-openEuler20.03-x86_64.tar.gz . +COPY gosu-amd64 /usr/local/bin/gosu +COPY openEuler_aarch64.repo /etc/yum.repos.d/openEuler_x86_64.repo +# remove all lines containing scws if do no want to chparser# +COPY scws.tar.gz . + +ENV LANG en_US.utf8 + +#RUN yum install -y epel-release + +RUN set -eux; \ + yum install -y bzip2 curl libaio shadow tar&& \ + groupadd -g 70 omm; \ + useradd -u 70 -g omm -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 -xf openGauss-Lite-${VERSION}-openEuler20.03-x86_64.tar.gz -C /usr/local/opengauss && \ + tar -xf /usr/local/opengauss/openGauss-Lite-${VERSION}-openEuler20.03-x86_64.bin -C /usr/local/opengauss && \ + chown -R omm:omm /var/run/opengauss && chown -R omm:omm /usr/local/opengauss && chown -R omm:omm /var/lib/opengauss && chown -R omm:omm /docker-entrypoint-initdb.d && \ + chmod 2777 /var/run/opengauss && \ + rm -rf openGauss-Lite-${VERSION}-openEuler20.03-x86_64.tar.gz && \ + rm -rf openGauss-Lite-${VERSION}-openEuler20.03-x86_64.bin && \ + tar -xzvf scws.tar.gz; chown -R omm:omm /scws; rm -rf scws.tar.gz && \ + chmod 1777 /tmp && \ + yum clean all + +RUN set -eux; \ + echo "export GAUSSHOME=/usr/local/opengauss" >> /home/omm/.bashrc && \ + echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omm/.bashrc && \ + echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc + +RUN set -eux; echo "export TMOUT=0 >> /etc/bashrc" + +ENV GOSU_VERSION 1.12 +RUN set -eux; \ + chmod +x /usr/local/bin/gosu + +ENV PGDATA /var/lib/opengauss/data + +COPY entrypoint.sh /usr/local/bin/ +RUN chmod 755 /usr/local/bin/entrypoint.sh;ln -s /usr/local/bin/entrypoint.sh / # backwards compat + +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 5432 +CMD ["gaussdb"] diff --git a/docker/dockerfiles/6.0.0/dockerfile_x86 b/docker/dockerfiles/6.0.0/dockerfile_x86 new file mode 100644 index 0000000000..63c379c62a --- /dev/null +++ b/docker/dockerfiles/6.0.0/dockerfile_x86 @@ -0,0 +1,50 @@ +FROM openeuler/openeuler:20.03-lts + +ARG VERSION=6.0.1 + +COPY openGauss-Server-${VERSION}-openEuler20.03-x86_64.tar.bz2 . +COPY gosu-amd64 /usr/local/bin/gosu +COPY openEuler_aarch64.repo /etc/yum.repos.d/openEuler_x86_64.repo +# remove all lines containing scws if do no want to chparser# +COPY scws.tar.gz . + +ENV LANG en_US.utf8 + +#RUN yum install -y epel-release + +RUN set -eux; \ + yum install -y bzip2 curl libaio shadow tar&& \ + groupadd -g 70 omm; \ + useradd -u 70 -g omm -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 -jxf openGauss-Server-${VERSION}-openEuler20.03-x86_64.tar.bz2 -C /usr/local/opengauss && \ + chown -R omm:omm /var/run/opengauss && chown -R omm:omm /usr/local/opengauss && chown -R omm:omm /var/lib/opengauss && chown -R omm:omm /docker-entrypoint-initdb.d && \ + chmod 2777 /var/run/opengauss && \ + rm -rf openGauss-Server-${VERSION}-openEuler20.03-x86_64.tar.bz2 && \ + tar -xzvf scws.tar.gz; chown -R omm:omm /scws; rm -rf scws.tar.gz && \ + chmod 1777 /tmp && \ + yum clean all + +RUN set -eux; \ + echo "export GAUSSHOME=/usr/local/opengauss" >> /home/omm/.bashrc && \ + echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omm/.bashrc && \ + echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc + +RUN set -eux; echo "export TMOUT=0 >> /etc/bashrc" + +ENV GOSU_VERSION 1.12 +RUN set -eux; \ + chmod +x /usr/local/bin/gosu + +ENV PGDATA /var/lib/opengauss/data + +COPY entrypoint.sh /usr/local/bin/ +RUN chmod 755 /usr/local/bin/entrypoint.sh;ln -s /usr/local/bin/entrypoint.sh / # backwards compat + +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 5432 +CMD ["gaussdb"] diff --git a/docker/dockerfiles/5.0.0/entrypoint.sh b/docker/dockerfiles/6.0.0/entrypoint.sh similarity index 97% rename from docker/dockerfiles/5.0.0/entrypoint.sh rename to docker/dockerfiles/6.0.0/entrypoint.sh index af94e45a84..25a9e2620f 100644 --- a/docker/dockerfiles/5.0.0/entrypoint.sh +++ b/docker/dockerfiles/6.0.0/entrypoint.sh @@ -7,8 +7,8 @@ set -Eeo pipefail # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) export GAUSSHOME=/usr/local/opengauss -export PATH=$GAUSSHOME/bin:$PATH -export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH +export PATH=$GAUSSHOME/bin:/scws/bin:$PATH +export LD_LIBRARY_PATH=$GAUSSHOME/lib:/scws/lib:$LD_LIBRARY_PATH file_env() { local var="$1" @@ -207,9 +207,16 @@ EOSQL } docker_setup_user() { + if [ -n "$GS_USER_PASSWORD" ]; then + PASSWORD_FOR_USER="$GS_USER_PASSWORD" + else + PASSWORD_FOR_USER="$GS_PASSWORD" + fi + if [ -n "$GS_USERNAME" ]; then - GS_DB= docker_process_sql --dbname postgres --set db="$GS_DB" --set passwd="$GS_PASSWORD" --set user="$GS_USERNAME" <<-'EOSQL' + GS_DB= docker_process_sql --dbname postgres --set db="$GS_DB" --set passwd="$PASSWORD_FOR_USER" --set user="$GS_USERNAME" <<-'EOSQL' create user :"user" with login password :"passwd" ; + grant all privileges to :"user" ; EOSQL else echo " default user is gaussdb" @@ -300,6 +307,8 @@ opengauss_setup_postgresql_conf() { if [ -n "$OTHER_PG_CONF" ]; then echo -e "$OTHER_PG_CONF" fi + + echo "session_timeout = 0" } >> "$PGDATA/postgresql.conf" } diff --git a/docker/dockerfiles/5.0.0/gosu-amd64 b/docker/dockerfiles/6.0.0/gosu-amd64 similarity index 100% rename from docker/dockerfiles/5.0.0/gosu-amd64 rename to docker/dockerfiles/6.0.0/gosu-amd64 diff --git a/docker/dockerfiles/5.0.0/gosu-arm64 b/docker/dockerfiles/6.0.0/gosu-arm64 similarity index 100% rename from docker/dockerfiles/5.0.0/gosu-arm64 rename to docker/dockerfiles/6.0.0/gosu-arm64 diff --git a/docker/dockerfiles/5.0.0/openEuler_aarch64.repo b/docker/dockerfiles/6.0.0/openEuler_aarch64.repo similarity index 100% rename from docker/dockerfiles/5.0.0/openEuler_aarch64.repo rename to docker/dockerfiles/6.0.0/openEuler_aarch64.repo diff --git a/docker/dockerfiles/5.0.0/sha256_file_amd64 b/docker/dockerfiles/6.0.0/sha256_file_amd64 similarity index 100% rename from docker/dockerfiles/5.0.0/sha256_file_amd64 rename to docker/dockerfiles/6.0.0/sha256_file_amd64 diff --git a/docker/dockerfiles/5.0.0/sha256_file_arm64 b/docker/dockerfiles/6.0.0/sha256_file_arm64 similarity index 100% rename from docker/dockerfiles/5.0.0/sha256_file_arm64 rename to docker/dockerfiles/6.0.0/sha256_file_arm64 diff --git a/docker/dockerfiles/buildDockerImage.sh b/docker/dockerfiles/buildDockerImage.sh index 3cdcc067fc..2dc05642d9 100644 --- a/docker/dockerfiles/buildDockerImage.sh +++ b/docker/dockerfiles/buildDockerImage.sh @@ -90,18 +90,14 @@ 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" ]; then - DOCKERFILE="dockerfile_amd" - else - DOCKERFILE="dockerfile_arm" -fi +file_arch="" if [ "$#" -eq 0 ]; then usage; exit 1; fi -while getopts "hesxiv:o:" optname; do +while getopts "hesxiv:o:m:" optname; do case "$optname" in "h") usage @@ -116,6 +112,9 @@ while getopts "hesxiv:o:" optname; do "o") DOCKEROPS="$OPTARG" ;; + "m") + MODE="$OPTARG" + ;; "?") usage; exit 1; @@ -127,6 +126,23 @@ while getopts "hesxiv:o:" optname; do esac done +if [ "$MODE" = "lite" ]; then + mode="lite_" +else + mode="" +fi +if [ "${arch}" = "amd64" ]; then + file_arch="x86_64" + if [ -f "/etc/openEuler-release" ];then + DOCKERFILE="dockerfile_${mode}x86" + else + DOCKERFILE="dockerfile_${mode}amd" + fi +else + file_arch="aarch64" + DOCKERFILE="dockerfile_${mode}arm" +fi + check_docker_version @@ -178,7 +194,42 @@ echo "Building image '$IMAGE_NAME' ..." # BUILD THE IMAGE (replace all environment variables) BUILD_START=$(date '+%s') -docker build --force-rm=true --no-cache=true \ +if [ "$mode" != "lite" ]; then + if [ -f "/etc/openEuler-release" ];then + opengauss_files_tar=(openGauss-Server-*-openEuler20.03-${file_arch}.tar.bz2) + if [[ ${#opengauss_files_tar[@]} -ne 1 || ! -f "${opengauss_files_tar[0]}" ]]; then + echo "ERROR: unable to choose server pkg" + echo "${opengauss_files_tar[0]}" + exit 1 + fi + opengauss_tar="${opengauss_files_tar[0]}" + opengauss_version=$(echo "${opengauss_tar}" | sed "s/.*openGauss-Server-\(.*\)-openEuler20.03-${file_arch}.tar.bz2/\1/") + else + opengauss_version="" + fi +else + if [ -f "/etc/openEuler-release" ];then + opengauss_files_tar=(openGauss-Lite-*-openEuler20.03-${file_arch}.tar.gz) + if [[ ${#opengauss_files_tar[@]} -ne 1 || ! -f "${opengauss_files_tar[0]}" ]]; then + echo "ERROR: unable to choose server pkg" + echo "${opengauss_files_tar[0]}" + exit 1 + fi + opengauss_tar="${opengauss_files_tar[0]}" + opengauss_version=$(echo "${opengauss_tar}" | sed "s/.*openGauss-Lite-\(.*\)-openEuler20.03-${file_arch}.tar.gz/\1/") + else + opengauss_version="" + fi +fi + +echo "version number=${opengauss_version}" + +if [ ! test -f scws.tar.gz ]; then + echo "Could not find scws.tar.gz." + echo "If chparser will not be used, please modify the dockerfile by removing lines containing scws." +fi + +docker build --build-arg VERSION=$opengauss_version --force-rm=true --no-cache=true \ $DOCKEROPS $PROXY_SETTINGS \ -t $IMAGE_NAME -f $DOCKERFILE . || { echo "" -- Gitee