diff --git a/dockerhub/alpine/Dockerfile b/dockerhub/alpine/Dockerfile index e2bbba7aa4..0ef8ce5f6e 100644 --- a/dockerhub/alpine/Dockerfile +++ b/dockerhub/alpine/Dockerfile @@ -1,30 +1,13 @@ -FROM alpine:3.18 AS build +FROM alpine:3.20 AS build # https://github.com/oven-sh/bun/releases ARG BUN_VERSION=latest -# TODO: Instead of downloading glibc from a third-party source, we should -# build it from source. This is a temporary solution. -# See: https://github.com/sgerrand/alpine-pkg-glibc - -# https://github.com/sgerrand/alpine-pkg-glibc/releases -# https://github.com/sgerrand/alpine-pkg-glibc/issues/176 -ARG GLIBC_VERSION=2.34-r0 - -# https://github.com/oven-sh/bun/issues/5545#issuecomment-1722461083 -ARG GLIBC_VERSION_AARCH64=2.26-r1 - -RUN apk --no-cache add \ - ca-certificates \ - curl \ - dirmngr \ - gpg \ - gpg-agent \ - unzip \ +RUN apk --no-cache add ca-certificates curl dirmngr gpg gpg-agent unzip \ && arch="$(apk --print-arch)" \ && case "${arch##*-}" in \ - x86_64) build="x64-baseline";; \ - aarch64) build="aarch64";; \ + x86_64) build="x64-musl-baseline";; \ + aarch64) build="aarch64-musl";; \ *) echo "error: unsupported architecture: $arch"; exit 1 ;; \ esac \ && version="$BUN_VERSION" \ @@ -59,37 +42,9 @@ RUN apk --no-cache add \ && unzip "bun-linux-$build.zip" \ && mv "bun-linux-$build/bun" /usr/local/bin/bun \ && rm -f "bun-linux-$build.zip" SHASUMS256.txt.asc SHASUMS256.txt \ - && chmod +x /usr/local/bin/bun \ - && cd /tmp \ - && case "${arch##*-}" in \ - x86_64) curl "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk" \ - -fsSLO \ - --compressed \ - --retry 5 \ - || (echo "error: failed to download: glibc v${GLIBC_VERSION}" && exit 1) \ - && mv "glibc-${GLIBC_VERSION}.apk" glibc.apk \ - && curl "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-bin-${GLIBC_VERSION}.apk" \ - -fsSLO \ - --compressed \ - --retry 5 \ - || (echo "error: failed to download: glibc-bin v${GLIBC_VERSION}" && exit 1) \ - && mv "glibc-bin-${GLIBC_VERSION}.apk" glibc-bin.apk ;; \ - aarch64) curl "https://raw.githubusercontent.com/squishyu/alpine-pkg-glibc-aarch64-bin/master/glibc-${GLIBC_VERSION_AARCH64}.apk" \ - -fsSLO \ - --compressed \ - --retry 5 \ - || (echo "error: failed to download: glibc v${GLIBC_VERSION_AARCH64}" && exit 1) \ - && mv "glibc-${GLIBC_VERSION_AARCH64}.apk" glibc.apk \ - && curl "https://raw.githubusercontent.com/squishyu/alpine-pkg-glibc-aarch64-bin/master/glibc-bin-${GLIBC_VERSION_AARCH64}.apk" \ - -fsSLO \ - --compressed \ - --retry 5 \ - || (echo "error: failed to download: glibc-bin v${GLIBC_VERSION_AARCH64}" && exit 1) \ - && mv "glibc-bin-${GLIBC_VERSION_AARCH64}.apk" glibc-bin.apk ;; \ - *) echo "error: unsupported architecture '$arch'"; exit 1 ;; \ - esac + && chmod +x /usr/local/bin/bun -FROM alpine:3.18 +FROM alpine:3.20 # Disable the runtime transpiler cache by default inside Docker containers. # On ephemeral containers, the cache is not useful @@ -107,10 +62,8 @@ COPY docker-entrypoint.sh /usr/local/bin/ RUN --mount=type=bind,from=build,source=/tmp,target=/tmp \ addgroup -g 1000 bun \ && adduser -u 1000 -G bun -s /bin/sh -D bun \ - && apk --no-cache --force-overwrite --allow-untrusted add \ - /tmp/glibc.apk \ - /tmp/glibc-bin.apk \ && ln -s /usr/local/bin/bun /usr/local/bin/bunx \ + && apk add libgcc libstdc++ \ && which bun \ && which bunx \ && bun --version