Skip to content

Commit e63a4b3

Browse files
authored
Merge pull request #28 from kubesphere/wansir-patch-1
Update Dockerfile
2 parents f799f5c + fcf5008 commit e63a4b3

1 file changed

Lines changed: 64 additions & 42 deletions

File tree

Dockerfile

Lines changed: 64 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,68 @@
1-
FROM alpine:3.21.3
2-
3-
ARG KUBECTL_VERSION=v1.33.1
4-
ARG HELM_VERSION=v3.18.1
5-
ARG KUSTOMIZE_VERSION=v5.6.0
6-
ARG TARGETOS
7-
ARG TARGETARCH
8-
9-
RUN apk update && apk add \
10-
bash \
11-
bash-completion \
12-
busybox-extras \
13-
net-tools \
14-
vim \
15-
curl \
16-
jq \
17-
yq \
18-
grep \
19-
wget \
20-
tcpdump \
21-
git \
22-
ca-certificates && \
23-
update-ca-certificates && \
24-
rm -rf /var/cache/apk/* && \
25-
curl -SsLO https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz && \
26-
tar xf helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz -C /usr/local/bin && \
27-
mv /usr/local/bin/${TARGETOS}-${TARGETARCH}/helm /usr/local/bin && \
28-
rm helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz && \
29-
rm -rf /usr/local/bin/${TARGETOS}-${TARGETARCH} && \
30-
helm plugin install https://github.com/helm/helm-mapkubeapis
31-
32-
RUN curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/${TARGETOS}/${TARGETARCH}/kubectl && \
33-
chmod +x ./kubectl && \
34-
mv ./kubectl /usr/local/bin/kubectl && \
35-
echo -e 'source /usr/share/bash-completion/bash_completion\nsource <(kubectl completion bash)' >>~/.bashrc
36-
37-
RUN curl -SsLO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz && \
38-
tar xvzf kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz && \
39-
mv kustomize /usr/local/bin/ && \
40-
rm kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz
1+
# ---------- Build stage ----------
2+
FROM alpine:3.22.1 AS builder
413

42-
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
4+
ARG TARGETOS=linux
5+
ARG TARGETARCH=amd64
6+
ARG KUBECTL_VERSION=v1.33.4
7+
ARG HELM_VERSION=v3.18.5
8+
ARG KUSTOMIZE_VERSION=v5.7.1
9+
10+
RUN apk add --no-cache curl tar gzip coreutils grep
11+
12+
WORKDIR /tmp
13+
14+
# ----- Download and verify Helm -----
15+
RUN curl -fsSLO https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz && \
16+
curl -fsSLO https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz.sha256 && \
17+
echo "$(cat helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz.sha256) helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz" | sha256sum -c - && \
18+
tar xf helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz && \
19+
mv ${TARGETOS}-${TARGETARCH}/helm /tmp/helm
20+
21+
# ----- Download and verify kubectl -----
22+
RUN curl -fsSLo /tmp/kubectl https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/${TARGETOS}/${TARGETARCH}/kubectl && \
23+
curl -fsSLo /tmp/kubectl.sha256 https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/${TARGETOS}/${TARGETARCH}/kubectl.sha256 && \
24+
echo "$(cat /tmp/kubectl.sha256) /tmp/kubectl" | sha256sum -c - && \
25+
chmod +x /tmp/kubectl
26+
27+
# ----- Download and verify kustomize -----
28+
# GitHub release tag: kustomize/vX.Y.Z
29+
# File name: kustomize_X.Y.Z_linux_amd64.tar.gz
30+
RUN curl -fsSLO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2F${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz && \
31+
curl -fsSLO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2F${KUSTOMIZE_VERSION}/checksums.txt && \
32+
grep "kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz" checksums.txt | sha256sum -c - && \
33+
tar xzf kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz
4334

44-
ENTRYPOINT ["entrypoint.sh"]
4535

36+
# ---------- Runtime stage ----------
37+
FROM alpine:3.22.1
4638

39+
RUN apk add --no-cache \
40+
bash \
41+
bash-completion \
42+
busybox-extras \
43+
net-tools \
44+
vim \
45+
curl \
46+
jq \
47+
yq \
48+
grep \
49+
wget \
50+
tcpdump \
51+
git \
52+
ca-certificates && \
53+
update-ca-certificates
54+
55+
# Copy verified binaries
56+
COPY --from=builder /tmp/helm /usr/local/bin/helm
57+
COPY --from=builder /tmp/kubectl /usr/local/bin/kubectl
58+
COPY --from=builder /tmp/kustomize /usr/local/bin/kustomize
59+
60+
# Enable kubectl bash completion globally
61+
RUN echo -e 'source /usr/share/bash-completion/bash_completion\nsource <(kubectl completion bash)' >> /etc/bash.bashrc
62+
63+
# Install Helm plugin
64+
RUN helm plugin install https://github.com/helm/helm-mapkubeapis
65+
66+
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
67+
68+
ENTRYPOINT ["entrypoint.sh"]

0 commit comments

Comments
 (0)