Skip to content
Snippets Groups Projects
Select Git revision
  • 4bf0763f4977fff7e9648add59e0540088f3ca9f
  • master default protected
  • dwmcallister-patch-1
  • 520-fix-wsl
  • tune-worker-processes
  • alpine-nginxorg
  • 1.29.1
  • 1.29.0
  • 1.28.0
  • 1.27.5
  • 1.27.3
  • 1.27.2
  • 1.27.0
  • 1.26.1
  • 1.26.0
  • 1.25.5
  • 1.25.4
  • 1.25.3
  • 1.25.2
  • 1.25.1
  • 1.25.0
  • 1.24.0
  • 1.23.3
  • 1.23.4
  • 1.23.2
  • 1.22.1
26 results

Dockerfile-alpine-perl.template

Blame
  • user avatar
    Konstantin Pavlov authored and Konstantin Pavlov committed
    Fixes #835.
    4b0d808b
    History
    Dockerfile-alpine-perl.template 3.35 KiB
    FROM nginx:%%NGINX_VERSION%%-alpine
    
    RUN set -x \
        && apkArch="$(cat /etc/apk/arch)" \
        && nginxPackages="%%PACKAGES%%
        " \
    # install prerequisites for public key and pkg-oss checks
        && apk add --no-cache --virtual .checksum-deps \
            openssl \
        && case "$apkArch" in \
            x86_64|aarch64) \
    # arches officially built by upstream
                set -x \
                && KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \
                && wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \
                && if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then \
                    echo "key verification succeeded!"; \
                    mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; \
                else \
                    echo "key verification failed!"; \
                    exit 1; \
                fi \
                && apk add -X "%%PACKAGEREPO%%v$(egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release)/main" --no-cache $nginxPackages \
                ;; \
            *) \
    # we're on an architecture upstream doesn't officially build for
    # let's build binaries from the published packaging sources
                set -x \
                && tempDir="$(mktemp -d)" \
                && chown nobody:nobody $tempDir \
                && apk add --no-cache --virtual .build-deps \
                    gcc \
                    libc-dev \
                    make \
                    openssl-dev \
                    pcre2-dev \
                    zlib-dev \
                    linux-headers \
                    perl-dev \
                    bash \
                    alpine-sdk \
                    findutils \
                && su nobody -s /bin/sh -c " \
                    export HOME=${tempDir} \
                    && cd ${tempDir} \
                    && curl -f -O https://hg.nginx.org/pkg-oss/archive/%%REVISION%%.tar.gz \
                    && PKGOSSCHECKSUM=\"%%PKGOSSCHECKSUM%% *%%REVISION%%.tar.gz\" \
                    && if [ \"\$(openssl sha512 -r %%REVISION%%.tar.gz)\" = \"\$PKGOSSCHECKSUM\" ]; then \
                        echo \"pkg-oss tarball checksum verification succeeded!\"; \
                    else \
                        echo \"pkg-oss tarball checksum verification failed!\"; \
                        exit 1; \
                    fi \
                    && tar xzvf %%REVISION%%.tar.gz \
                    && cd pkg-oss-%%REVISION%% \
                    && cd alpine \
                    && make %%BUILDTARGET%% \
                    && apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \
                    && abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz \
                    " \
                && cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \
                && apk del --no-network .build-deps \
                && apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages \
                ;; \
        esac \
    # remove checksum deps
        && apk del --no-network .checksum-deps \
    # if we have leftovers from building, let's purge them (including extra, unnecessary build deps)
        && if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \
        && if [ -f "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \
        && if [ -f "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi