diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 957a6b5..a373a30 100755 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -92,7 +92,7 @@ jobs: VERSION_NUM=7 MIRROR=0 - tag_suffix: aarch64_el8 - dockerfile: ./docker/Dockerfile.centos-stream + dockerfile: ./docker/Dockerfile.centos build_args: | VERSION_NUM=8 MIRROR=0 diff --git a/docker/Dockerfile.centos b/docker/Dockerfile.centos index 10f964a..2480a01 100644 --- a/docker/Dockerfile.centos +++ b/docker/Dockerfile.centos @@ -1,5 +1,5 @@ ARG VERSION_NUM="7" -FROM centos:$VERSION_NUM +FROM dph5199278/centos:$VERSION_NUM ARG VERSION_NUM ARG MIRROR=0 LABEL Author="Rex Zhou " @@ -9,12 +9,13 @@ WORKDIR /data # Copy all files COPY ./docker/ /data/docker/ +SHELL ["/entrypoint.sh"] + RUN export MIRROR="$MIRROR" && \ bash ./docker/modify_yum_source.sh && \ if [ "$VERSION_NUM" = "8" ]; then \ yum install -y perl perl-IPC-Cmd perl-Time-Piece systemd-devel openssl-devel && \ - yum install -y 'dnf-command(config-manager)' && \ - yum config-manager --set-enabled powertools; \ + yum install -y 'dnf-command(config-manager)'; \ elif [ "$VERSION_NUM" = "7" ]; then \ yum install -y systemd-devel perl perl-IPC-Cmd perl-Time-Piece ;\ elif [ "$VERSION_NUM" = "6" ]; then \ diff --git a/docker/Dockerfile.centos5 b/docker/Dockerfile.centos5 index 3f22706..b2769a4 100644 --- a/docker/Dockerfile.centos5 +++ b/docker/Dockerfile.centos5 @@ -1,10 +1,12 @@ -FROM centos:5 AS builder +FROM dph5199278/centos:5 AS builder ARG MIRROR=1 WORKDIR /data COPY ./docker/*.sh /data/docker/ COPY ./downloads/perl* /data/ +SHELL ["/entrypoint.sh"] + RUN export MIRROR="$MIRROR" && \ bash ./docker/modify_yum_source.sh && \ yum install -y gcc44 make @@ -15,18 +17,18 @@ RUN mkdir -p perl && tar xfz perl-*.tar.gz --strip-components=1 -C perl && pushd RUN rm -rf perl-*.tar.gz perl -FROM centos:5 +FROM dph5199278/centos:5 ARG MIRROR=1 ENV PATH=/usr/local/perl/bin:$PATH WORKDIR /data COPY --from=builder /usr/local/perl /usr/local/perl COPY ./docker/*.sh /data/docker/ +SHELL ["/entrypoint.sh"] + RUN export MIRROR="$MIRROR" && \ bash ./docker/modify_yum_source.sh && \ - yum install -y gcc44 autoconf automake make rpm-build setarch pam-devel krb5-devel zlib-devel && \ - sed 's|]$|-i386]|;s|\$basearch|i386|g' /etc/yum.repos.d/CentOS-Base.repo > /etc/yum.repos.d/CentOS-Base-i386.repo && \ - yum makecache && \ + yum install -y gcc44 autoconf automake make rpm-build pam-devel krb5-devel zlib-devel && \ yum install -y glibc-devel.i386 libgcc.i386 pam-devel.i386 krb5-devel.i386 zlib-devel.i386 e2fsprogs-devel.i386 && \ yum clean all diff --git a/docker/modify_yum_source.sh b/docker/modify_yum_source.sh index e1ef81e..56f933d 100644 --- a/docker/modify_yum_source.sh +++ b/docker/modify_yum_source.sh @@ -8,95 +8,45 @@ RELEASE_VER=$(rpm --eval '%{?dist}') [ -z "$RELEASE_VER" ] && RELEASE_VER=".el5" -# Cent OS 5 is NOT support modern SSL protocol, so use plain HTTP protocol. -if [ "$RELEASE_VER" != ".el5" ]; then +function modify_el() { + if [ "$MIRROR" != "0" ]; then + # Using 163 mirror, which is much useful for Chinese users. + MIRROR_URL="mirrors.163.com/centos-vault"; + else + # Default mirror, the nsc mirror link. + MIRROR_URL="mirror.nsc.liu.se/centos-store"; + fi + + sed -e "s|mirror.nsc.liu.se/centos-store|${MIRROR_URL}|g" \ + /etc/yum.repos.d/CentOS-*.repo && \ + rm -rf /var/cache/yum/ && \ + yum makecache +} + +function modify_amzn() { if [ "$MIRROR" != "0" ]; then # Using USTC mirror, which is much useful for Chinese users. - MIRROR_URL="https://mirrors.ustc.edu.cn/centos-vault"; AWS_DOMAIN="amazonaws.com.cn" AWS_REGION="cn-northwest-1" else # Default mirror, the official mirror link. - MIRROR_URL="https://vault.centos.org/"; AWS_DOMAIN="amazonaws.com" AWS_REGION="us-east-2" fi - else - MIRROR_URL="http://mirrors.huaweicloud.com" -fi - -# For ARM platform, the mirror url needs a suffix `altarch` -if [ "$(uname -m)" = "aarch64" ]; then - OS_KEY="altarch" - if [ "$RELEASE_VER" != ".el8" ]; then - MIRROR_URL="$MIRROR_URL/$OS_KEY"; - fi -else - OS_KEY="centos" -fi -function modify_el8() { - sed -e "s|^mirrorlist=|#mirrorlist=|g" \ - -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=${MIRROR_URL}/8.5.2111|g" \ - -i.bak /etc/yum.repos.d/CentOS-*.repo && \ - rm -rf /var/cache/yum/ && \ - yum makecache timer -} - -function modify_el7() { - sed -e 's|^mirrorlist=|#mirrorlist=|g' \ - -e "s@^#baseurl=http://mirror.centos.org/$OS_KEY/\$releasever@baseurl=${MIRROR_URL}/7.9.2009@g" \ - -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=${MIRROR_URL}/7.9.2009|g" \ - -i.bak /etc/yum.repos.d/CentOS-*.repo && \ - rm -rf /var/cache/yum/ && \ - yum makecache fast -} - -function modify_el6() { - sed -e "s|^mirrorlist=|#mirrorlist=|g" \ - -e "s|^#baseurl=http://mirror.centos.org/$OS_KEY/\$releasever|baseurl=${MIRROR_URL}/6.10|g" \ - -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=${MIRROR_URL}/6.10|g" \ - -i.bak /etc/yum.repos.d/CentOS-*.repo && \ - rm -rf /var/cache/yum/ && \ - yum makecache fast -} - -function modify_el5() { - sed -e "s|^mirrorlist=|#mirrorlist=|g" \ - -e "s|^#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=${MIRROR_URL}/centos-vault/5.11|g" \ - -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=${MIRROR_URL}/centos-vault/5.11|g" \ - -i.bak /etc/yum.repos.d/*.repo && \ - rm -rf /var/cache/yum/ && \ - yum makecache fast + [ -d /etc/yum/vars ] && echo "$AWS_DOMAIN" > /etc/yum/vars/awsdomain && echo "$AWS_REGION" > /etc/yum/vars/awsregion + [ -d /etc/dnf/vars ] && echo "$AWS_DOMAIN" > /etc/dnf/vars/awsdomain && echo "$AWS_REGION" > /etc/dnf/vars/awsregion } case $RELEASE_VER in - .el8) - modify_el8 - ;; - .el7) - modify_el7 - ;; - .el6) - modify_el6 - ;; - .el5) - modify_el5 - ;; - .amzn1) - echo "$AWS_DOMAIN" > /etc/yum/vars/awsdomain - echo "$AWS_REGION" > /etc/yum/vars/awsregion - ;; - .amzn2) - echo "$AWS_DOMAIN" > /etc/yum/vars/awsdomain - echo "$AWS_REGION" > /etc/yum/vars/awsregion + .el*) + modify_el ;; - .amzn2023) - echo "$AWS_DOMAIN" > /etc/dnf/vars/awsdomain - echo "$AWS_REGION" > /etc/dnf/vars/awsregion + .amzn*) + modify_amzn ;; *) - echo "rpm dist undefined, please specify: el5 el6 el7" + echo "rpm dist undefined, please specify: el5 el6 el7 el8" exit 1 ;; -esac +esac \ No newline at end of file diff --git a/pullsrc.sh b/pullsrc.sh index e623c51..351f86b 100755 --- a/pullsrc.sh +++ b/pullsrc.sh @@ -69,7 +69,7 @@ if [[ ! -f $ASKPASSSRC && ${DOCKERBUILD:-0} == 0 ]]; then echo "!!! Please download $ASKPASSSRC in $PWD by yourself." fi -if [[ $($__dir/compile.sh GETEL) == "el5" && ${DOCKERBUILD:-0} == 1 && ! -f $PERLSRC ]]; then +if [[ ${DOCKERBUILD:-0} == 1 && ! -f $PERLSRC ]]; then echo Get: $PERLMIR/$PERLSRC wget --no-check-certificate $PERLMIR/$PERLSRC || \ echo "!!! Please download $PERLSRC in $PWD by yourself."