Skip to content

Commit c956559

Browse files
committed
build: optimize Dockerfile
1 parent 10ac438 commit c956559

File tree

1 file changed

+41
-24
lines changed

1 file changed

+41
-24
lines changed

Dockerfile

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,46 @@
1-
FROM alpine:3.22.1 AS builder
2-
RUN apk update \
3-
&& apk add curl
4-
RUN export ARCH=$([[ "$(uname -m)" == "aarch64" ]] && echo "arm64" || echo "amd64") \
5-
&& mkdir -p /tmp/kubectl-versions && cd /tmp/kubectl-versions \
6-
&& curl -o kubectl1.34 -L https://storage.googleapis.com/kubernetes-release/release/v1.34.1/bin/linux/${ARCH}/kubectl \
7-
&& curl -o kubectl1.33 -L https://storage.googleapis.com/kubernetes-release/release/v1.33.5/bin/linux/${ARCH}/kubectl \
8-
&& curl -o kubectl1.32 -L https://storage.googleapis.com/kubernetes-release/release/v1.32.9/bin/linux/${ARCH}/kubectl
9-
10-
FROM debian:bookworm-20250908-slim AS prod
11-
RUN apt-get update -y
12-
# install busybox by building source until it's unavailable by apt-get for v1.36.1 ad no need to link [[
13-
RUN apt-get install --no-install-recommends wget build-essential -y && \
14-
wget --no-check-certificate https://busybox.net/downloads/busybox-1.36.1.tar.bz2 && \
15-
tar -xvjf busybox-1.36.1.tar.bz2 && \
16-
cd busybox-1.36.1 && \
17-
make defconfig && \
18-
make && \
19-
make CONFIG_PREFIX="/" install
1+
ARG DEBIAN_VERSION=bookworm-20251103-slim
2+
3+
4+
FROM debian:${DEBIAN_VERSION} AS builder
5+
ARG TARGETPLATFORM
6+
RUN apt-get update && apt-get install -y build-essential
7+
8+
ARG BUSYBOX_VERSION=1.36.1
9+
ADD https://busybox.net/downloads/busybox-${BUSYBOX_VERSION}.tar.bz2 /busybox-${BUSYBOX_VERSION}.tar.bz2
10+
ADD https://busybox.net/downloads/busybox-${BUSYBOX_VERSION}.tar.bz2.sha256 /busybox-${BUSYBOX_VERSION}.tar.bz2.sha256
11+
RUN echo "$(cat busybox-${BUSYBOX_VERSION}.tar.bz2.sha256) busybox-${BUSYBOX_VERSION}.tar.bz2" | sha256sum --check
12+
RUN tar -xvjf busybox-${BUSYBOX_VERSION}.tar.bz2 \
13+
&& cd busybox-${BUSYBOX_VERSION} \
14+
&& make defconfig \
15+
&& make \
16+
&& make CONFIG_PREFIX="/" install
17+
18+
ADD https://dl.k8s.io/release/v1.34.1/bin/${TARGETPLATFORM}/kubectl /kubectl/kubectl1.34
19+
ADD https://dl.k8s.io/release/v1.34.1/bin/${TARGETPLATFORM}/kubectl.sha256 /kubectl1.34.sha256
20+
RUN echo "$(cat kubectl1.34.sha256) /kubectl/kubectl1.34" | sha256sum --check
21+
22+
ADD https://dl.k8s.io/release/v1.33.5/bin/${TARGETPLATFORM}/kubectl /kubectl/kubectl1.33
23+
ADD https://dl.k8s.io/release/v1.33.5/bin/${TARGETPLATFORM}/kubectl.sha256 /kubectl1.33.sha256
24+
RUN echo "$(cat kubectl1.33.sha256) /kubectl/kubectl1.33" | sha256sum --check
25+
26+
ADD https://dl.k8s.io/release/v1.32.9/bin/${TARGETPLATFORM}/kubectl /kubectl/kubectl1.32
27+
ADD https://dl.k8s.io/release/v1.32.9/bin/${TARGETPLATFORM}/kubectl.sha256 /kubectl1.32.sha256
28+
RUN echo "$(cat kubectl1.32.sha256) /kubectl/kubectl1.32" | sha256sum --check
29+
30+
31+
32+
FROM debian:${DEBIAN_VERSION} AS prod
2033
RUN adduser --gecos "" --disabled-password --home /home/cfu --shell /bin/bash cfu
21-
#copy all versions of kubectl to switch between them later.
22-
COPY --chown=cfu --chmod=775 --from=builder /tmp/kubectl-versions/* /usr/local/bin/
23-
COPY --chown=cfu --chmod=775 --from=builder /tmp/kubectl-versions/kubectl1.34 /usr/local/bin/kubectl
34+
35+
COPY --chown=cfu --chmod=775 cf-deploy-kubernetes.sh /cf-deploy-kubernetes
36+
COPY --chown=cfu --chmod=775 template.sh /template.sh
37+
38+
COPY --chown=cfu --chmod=775 --from=builder /usr/bin/busybox /usr/bin/busybox
39+
RUN busybox --install
40+
41+
COPY --chown=cfu --chmod=775 --from=builder /kubectl/* /usr/local/bin/
42+
RUN ln -s /usr/local/bin/kubectl1.34 /usr/local/bin/kubectl
2443

2544
WORKDIR /
26-
ADD --chown=cfu --chmod=775 cf-deploy-kubernetes.sh /cf-deploy-kubernetes
27-
ADD --chown=cfu --chmod=775 template.sh /template.sh
2845
USER cfu
2946
CMD ["bash"]

0 commit comments

Comments
 (0)