mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
Organize Dockerfiles for official status
This commit is contained in:
4
Dockerfile-test
Normal file
4
Dockerfile-test
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
FROM bun:debian
|
||||||
|
ADD test .
|
||||||
|
RUN bun install
|
||||||
|
CMD bun test
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
### GLOBALS ###
|
|
||||||
ARG GLIBC_RELEASE=2.34-r0
|
|
||||||
|
|
||||||
|
|
||||||
### GET ###
|
|
||||||
FROM alpine:latest as get
|
|
||||||
|
|
||||||
# prepare environment
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN apk --no-cache add unzip
|
|
||||||
|
|
||||||
# get bun
|
|
||||||
ADD https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip bun-linux-x64.zip
|
|
||||||
RUN unzip bun-linux-x64.zip
|
|
||||||
|
|
||||||
# get glibc
|
|
||||||
ARG GLIBC_RELEASE
|
|
||||||
RUN wget https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
|
||||||
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_RELEASE}/glibc-${GLIBC_RELEASE}.apk
|
|
||||||
|
|
||||||
|
|
||||||
### IMAGE ###
|
|
||||||
FROM alpine:latest
|
|
||||||
|
|
||||||
# install bun
|
|
||||||
COPY --from=get /tmp/bun-linux-x64/bun /usr/local/bin
|
|
||||||
|
|
||||||
# prepare glibc
|
|
||||||
ARG GLIBC_RELEASE
|
|
||||||
COPY --from=get /tmp/sgerrand.rsa.pub /etc/apk/keys
|
|
||||||
COPY --from=get /tmp/glibc-${GLIBC_RELEASE}.apk /tmp
|
|
||||||
|
|
||||||
# install glibc
|
|
||||||
RUN apk --no-cache --force-overwrite add /tmp/glibc-${GLIBC_RELEASE}.apk && \
|
|
||||||
|
|
||||||
# cleanup
|
|
||||||
rm /etc/apk/keys/sgerrand.rsa.pub && \
|
|
||||||
rm /tmp/glibc-${GLIBC_RELEASE}.apk && \
|
|
||||||
|
|
||||||
# smoke test
|
|
||||||
bun --version
|
|
||||||
29
dockerhub/Dockerfile-alpine
Normal file
29
dockerhub/Dockerfile-alpine
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# bun:alpine
|
||||||
|
# Not officially supported (yet)
|
||||||
|
|
||||||
|
ARG GLIBC_RELEASE=2.35-r0
|
||||||
|
|
||||||
|
FROM alpine:latest AS build
|
||||||
|
|
||||||
|
WORKDIR /tmp
|
||||||
|
RUN apk --no-cache add unzip
|
||||||
|
|
||||||
|
ARG GLIBC_RELEASE
|
||||||
|
RUN wget https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||||
|
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_RELEASE}/glibc-${GLIBC_RELEASE}.apk
|
||||||
|
|
||||||
|
ADD https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip bun-linux-x64.zip
|
||||||
|
RUN unzip bun-linux-x64.zip
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
ARG GLIBC_RELEASE
|
||||||
|
COPY --from=build /tmp/sgerrand.rsa.pub /etc/apk/keys
|
||||||
|
COPY --from=build /tmp/glibc-${GLIBC_RELEASE}.apk /tmp
|
||||||
|
COPY --from=build /tmp/bun-linux-x64/bun /usr/local/bin
|
||||||
|
|
||||||
|
RUN apk --no-cache --force-overwrite add /tmp/glibc-${GLIBC_RELEASE}.apk \
|
||||||
|
&& rm /etc/apk/keys/sgerrand.rsa.pub \
|
||||||
|
&& rm /tmp/glibc-${GLIBC_RELEASE}.apk
|
||||||
|
|
||||||
|
RUN bun --version
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
# https://hub.docker.com/_/debian
|
FROM debian:bullseye-slim AS build
|
||||||
# https://hub.docker.com/_/ubuntu
|
|
||||||
ARG IMAGE=debian:bullseye-slim
|
|
||||||
|
|
||||||
FROM $IMAGE AS base
|
|
||||||
|
|
||||||
# https://github.com/oven-sh/bun/releases
|
# https://github.com/oven-sh/bun/releases
|
||||||
ARG BUN_VERSION=latest
|
ARG BUN_VERSION=latest
|
||||||
@@ -25,7 +21,7 @@ RUN apt-get update -qq \
|
|||||||
esac \
|
esac \
|
||||||
&& version="$BUN_VERSION" \
|
&& version="$BUN_VERSION" \
|
||||||
&& case "$version" in \
|
&& case "$version" in \
|
||||||
latest | canary | bun-v*) tag="$version"; ;; \
|
latest | canary | bun-v*) tag="$version"; ;; \
|
||||||
v*) tag="bun-$version"; ;; \
|
v*) tag="bun-$version"; ;; \
|
||||||
*) tag="bun-v$version"; ;; \
|
*) tag="bun-v$version"; ;; \
|
||||||
esac \
|
esac \
|
||||||
@@ -62,7 +58,7 @@ RUN apt-get update -qq \
|
|||||||
&& which bunx \
|
&& which bunx \
|
||||||
&& bun --version
|
&& bun --version
|
||||||
|
|
||||||
FROM $IMAGE
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
RUN groupadd bun \
|
RUN groupadd bun \
|
||||||
--gid 1000 \
|
--gid 1000 \
|
||||||
@@ -72,12 +68,10 @@ RUN groupadd bun \
|
|||||||
--shell /bin/sh \
|
--shell /bin/sh \
|
||||||
--create-home
|
--create-home
|
||||||
|
|
||||||
COPY --from=base /usr/local/bin/bun /usr/local/bin
|
COPY docker-entrypoint.sh /usr/local/bin
|
||||||
COPY --from=base /usr/local/bin/bunx /usr/local/bin
|
COPY --from=build /usr/local/bin/bun /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bunx /usr/local/bin
|
||||||
RUN which bun \
|
|
||||||
&& which bunx \
|
|
||||||
&& bun --version
|
|
||||||
|
|
||||||
WORKDIR /home/bun/app
|
WORKDIR /home/bun/app
|
||||||
CMD ["bun"]
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["/usr/local/bin/bun"]
|
||||||
|
|||||||
68
dockerhub/Dockerfile-distroless
Normal file
68
dockerhub/Dockerfile-distroless
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
FROM debian:bullseye-slim AS build
|
||||||
|
|
||||||
|
# https://github.com/oven-sh/bun/releases
|
||||||
|
ARG BUN_VERSION=latest
|
||||||
|
|
||||||
|
RUN apt-get update -qq \
|
||||||
|
&& apt-get install -qq --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
dirmngr \
|
||||||
|
gpg \
|
||||||
|
gpg-agent \
|
||||||
|
unzip \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& arch="$(dpkg --print-architecture)" \
|
||||||
|
&& case "${arch##*-}" in \
|
||||||
|
amd64) build="x64-baseline";; \
|
||||||
|
arm64) build="aarch64";; \
|
||||||
|
*) echo "error: unsupported architecture: ($arch)"; exit 1 ;; \
|
||||||
|
esac \
|
||||||
|
&& version="$BUN_VERSION" \
|
||||||
|
&& case "$version" in \
|
||||||
|
latest | canary | bun-v*) tag="$version"; ;; \
|
||||||
|
v*) tag="bun-$version"; ;; \
|
||||||
|
*) tag="bun-v$version"; ;; \
|
||||||
|
esac \
|
||||||
|
&& case "$tag" in \
|
||||||
|
latest) release="latest/download"; ;; \
|
||||||
|
*) release="download/$tag"; ;; \
|
||||||
|
esac \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/bun-linux-$build.zip" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
|| (echo "error: unknown release: ($tag)" && exit 1) \
|
||||||
|
&& for key in \
|
||||||
|
"F3DCC08A8572C0749B3E18888EAB4D40A7B22B59" \
|
||||||
|
; do \
|
||||||
|
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" \
|
||||||
|
|| gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
|
||||||
|
done \
|
||||||
|
&& gpg --update-trustdb \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/SHASUMS256.txt.asc" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& grep " bun-linux-$build.zip\$" SHASUMS256.txt | sha256sum -c - \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& 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 \
|
||||||
|
&& ln -s /usr/local/bin/bun /usr/local/bin/bunx \
|
||||||
|
&& which bun \
|
||||||
|
&& which bunx \
|
||||||
|
&& bun --version
|
||||||
|
|
||||||
|
FROM gcr.io/distroless/base-nossl-debian11
|
||||||
|
|
||||||
|
COPY --from=build /usr/local/bin/bun /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bunx /usr/local/bin
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
ENTRYPOINT ["/usr/local/bin/bun"]
|
||||||
|
CMD ["/usr/local/bin/bun"]
|
||||||
77
dockerhub/debian-slim/Dockerfile
Normal file
77
dockerhub/debian-slim/Dockerfile
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
FROM debian:bullseye-slim AS build
|
||||||
|
|
||||||
|
# https://github.com/oven-sh/bun/releases
|
||||||
|
ARG BUN_VERSION=0.5.7
|
||||||
|
|
||||||
|
RUN apt-get update -qq \
|
||||||
|
&& apt-get install -qq --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
dirmngr \
|
||||||
|
gpg \
|
||||||
|
gpg-agent \
|
||||||
|
unzip \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& arch="$(dpkg --print-architecture)" \
|
||||||
|
&& case "${arch##*-}" in \
|
||||||
|
amd64) build="x64-baseline";; \
|
||||||
|
arm64) build="aarch64";; \
|
||||||
|
*) echo "error: unsupported architecture: ($arch)"; exit 1 ;; \
|
||||||
|
esac \
|
||||||
|
&& version="$BUN_VERSION" \
|
||||||
|
&& case "$version" in \
|
||||||
|
latest | canary | bun-v*) tag="$version"; ;; \
|
||||||
|
v*) tag="bun-$version"; ;; \
|
||||||
|
*) tag="bun-v$version"; ;; \
|
||||||
|
esac \
|
||||||
|
&& case "$tag" in \
|
||||||
|
latest) release="latest/download"; ;; \
|
||||||
|
*) release="download/$tag"; ;; \
|
||||||
|
esac \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/bun-linux-$build.zip" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
|| (echo "error: unknown release: ($tag)" && exit 1) \
|
||||||
|
&& for key in \
|
||||||
|
"F3DCC08A8572C0749B3E18888EAB4D40A7B22B59" \
|
||||||
|
; do \
|
||||||
|
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" \
|
||||||
|
|| gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
|
||||||
|
done \
|
||||||
|
&& gpg --update-trustdb \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/SHASUMS256.txt.asc" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& grep " bun-linux-$build.zip\$" SHASUMS256.txt | sha256sum -c - \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& 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 \
|
||||||
|
&& ln -s /usr/local/bin/bun /usr/local/bin/bunx \
|
||||||
|
&& which bun \
|
||||||
|
&& which bunx \
|
||||||
|
&& bun --version
|
||||||
|
|
||||||
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
|
RUN groupadd bun \
|
||||||
|
--gid 1000 \
|
||||||
|
&& useradd bun \
|
||||||
|
--uid 1000 \
|
||||||
|
--gid bun \
|
||||||
|
--shell /bin/sh \
|
||||||
|
--create-home
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bun /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bunx /usr/local/bin
|
||||||
|
|
||||||
|
WORKDIR /home/bun/app
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["/usr/local/bin/bun"]
|
||||||
8
dockerhub/debian-slim/docker-entrypoint.sh
Executable file
8
dockerhub/debian-slim/docker-entrypoint.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then
|
||||||
|
set -- /usr/local/bin/bun "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
77
dockerhub/debian/Dockerfile
Normal file
77
dockerhub/debian/Dockerfile
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
FROM debian:bullseye-slim AS build
|
||||||
|
|
||||||
|
# https://github.com/oven-sh/bun/releases
|
||||||
|
ARG BUN_VERSION=0.5.7
|
||||||
|
|
||||||
|
RUN apt-get update -qq \
|
||||||
|
&& apt-get install -qq --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
dirmngr \
|
||||||
|
gpg \
|
||||||
|
gpg-agent \
|
||||||
|
unzip \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& arch="$(dpkg --print-architecture)" \
|
||||||
|
&& case "${arch##*-}" in \
|
||||||
|
amd64) build="x64-baseline";; \
|
||||||
|
arm64) build="aarch64";; \
|
||||||
|
*) echo "error: unsupported architecture: ($arch)"; exit 1 ;; \
|
||||||
|
esac \
|
||||||
|
&& version="$BUN_VERSION" \
|
||||||
|
&& case "$version" in \
|
||||||
|
latest | canary | bun-v*) tag="$version"; ;; \
|
||||||
|
v*) tag="bun-$version"; ;; \
|
||||||
|
*) tag="bun-v$version"; ;; \
|
||||||
|
esac \
|
||||||
|
&& case "$tag" in \
|
||||||
|
latest) release="latest/download"; ;; \
|
||||||
|
*) release="download/$tag"; ;; \
|
||||||
|
esac \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/bun-linux-$build.zip" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
|| (echo "error: unknown release: ($tag)" && exit 1) \
|
||||||
|
&& for key in \
|
||||||
|
"F3DCC08A8572C0749B3E18888EAB4D40A7B22B59" \
|
||||||
|
; do \
|
||||||
|
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" \
|
||||||
|
|| gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
|
||||||
|
done \
|
||||||
|
&& gpg --update-trustdb \
|
||||||
|
&& curl "https://github.com/oven-sh/bun/releases/$release/SHASUMS256.txt.asc" \
|
||||||
|
-fsSLO \
|
||||||
|
--compressed \
|
||||||
|
--retry 5 \
|
||||||
|
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& grep " bun-linux-$build.zip\$" SHASUMS256.txt | sha256sum -c - \
|
||||||
|
|| (echo "error: failed to verify release: ($tag)" && exit 1) \
|
||||||
|
&& 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 \
|
||||||
|
&& ln -s /usr/local/bin/bun /usr/local/bin/bunx \
|
||||||
|
&& which bun \
|
||||||
|
&& which bunx \
|
||||||
|
&& bun --version
|
||||||
|
|
||||||
|
FROM debian:bullseye
|
||||||
|
|
||||||
|
RUN groupadd bun \
|
||||||
|
--gid 1000 \
|
||||||
|
&& useradd bun \
|
||||||
|
--uid 1000 \
|
||||||
|
--gid bun \
|
||||||
|
--shell /bin/sh \
|
||||||
|
--create-home
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bun /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/bin/bunx /usr/local/bin
|
||||||
|
|
||||||
|
WORKDIR /home/bun/app
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["/usr/local/bin/bun"]
|
||||||
8
dockerhub/debian/docker-entrypoint.sh
Executable file
8
dockerhub/debian/docker-entrypoint.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then
|
||||||
|
set -- /usr/local/bin/bun "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
8
dockerhub/docker-entrypoint.sh
Executable file
8
dockerhub/docker-entrypoint.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then
|
||||||
|
set -- /usr/local/bin/bun "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
Reference in New Issue
Block a user