Files
monok8s/docker/download-packages.Dockerfile
2026-05-10 06:27:56 +08:00

248 lines
6.7 KiB
Docker

ARG DEP_PKG_MIRROR=
ARG DEP_PKG_OFFLINE=0
FROM alpine:3.23.0 AS base
ARG DEP_PKG_MIRROR
ARG DEP_PKG_OFFLINE
ENV DEP_PKG_MIRROR="${DEP_PKG_MIRROR}"
ENV DEP_PKG_OFFLINE="${DEP_PKG_OFFLINE}"
RUN apk add --no-cache curl ca-certificates
COPY scripts/fetch-artifact /usr/local/bin/fetch-artifact
# ---- kubelet ----
FROM base AS kubelet
ARG KUBE_VERSION
ARG ARCH
WORKDIR /out/kubernetes
RUN fetch-artifact \
"packages/kubernetes/kubelet-${KUBE_VERSION}" \
"kubelet-${KUBE_VERSION}" \
"https://dl.k8s.io/${KUBE_VERSION}/bin/linux/${ARCH}/kubelet" && \
chmod +x "kubelet-${KUBE_VERSION}"
# ---- kubeadm ----
FROM base AS kubeadm
ARG KUBE_VERSION
ARG ARCH
WORKDIR /out/kubernetes
RUN fetch-artifact \
"packages/kubernetes/kubeadm-${KUBE_VERSION}" \
"kubeadm-${KUBE_VERSION}" \
"https://dl.k8s.io/${KUBE_VERSION}/bin/linux/${ARCH}/kubeadm" && \
chmod +x "kubeadm-${KUBE_VERSION}"
# ---- kubectl ----
FROM base AS kubectl
ARG KUBE_VERSION
ARG ARCH
WORKDIR /out/kubernetes
RUN fetch-artifact \
"packages/kubernetes/kubectl-${KUBE_VERSION}" \
"kubectl-${KUBE_VERSION}" \
"https://dl.k8s.io/${KUBE_VERSION}/bin/linux/${ARCH}/kubectl" && \
chmod +x "kubectl-${KUBE_VERSION}"
# ---- busybox ----
FROM base AS busybox
ARG BUSYBOX_VERSION
ARG BUSYBOX_TAR
WORKDIR /out
RUN fetch-artifact \
"${BUSYBOX_TAR}" \
"busybox-${BUSYBOX_VERSION}.tar.gz" \
"https://github.com/mirror/busybox/archive/refs/tags/${BUSYBOX_VERSION}.tar.gz"
# ---- e2fsprogs ----
FROM base AS e2fsprogs
ARG E2FSPROGS_VERSION
ARG E2FSPROGS_TAR
WORKDIR /out
RUN fetch-artifact \
"${E2FSPROGS_TAR}" \
"e2fsprogs-v${E2FSPROGS_VERSION}.tar.gz" \
"https://github.com/tytso/e2fsprogs/archive/refs/tags/v${E2FSPROGS_VERSION}.tar.gz"
# ---- dpdk ----
FROM base AS dpdk
ARG DPDK_VERSION
ARG DPDK_TAR
WORKDIR /out/nxp/dpdk
RUN fetch-artifact \
"${DPDK_TAR}" \
"${DPDK_VERSION}.tar.gz" \
"https://github.com/nxp-qoriq/dpdk/archive/refs/tags/${DPDK_VERSION}.tar.gz"
# ---- fmlib ----
FROM base AS fmlib
ARG FMLIB_VERSION
ARG FMLIB_TAR
WORKDIR /out/nxp/fmlib
RUN fetch-artifact \
"${FMLIB_TAR}" \
"${FMLIB_VERSION}.tar.gz" \
"https://github.com/nxp-qoriq/fmlib/archive/refs/tags/${FMLIB_VERSION}.tar.gz"
# ---- fmc ----
FROM base AS fmc
ARG FMC_VERSION
ARG FMC_TAR
WORKDIR /out/nxp/fmc
RUN fetch-artifact \
"${FMC_TAR}" \
"${FMC_VERSION}.tar.gz" \
"https://github.com/nxp-qoriq/fmc/archive/refs/tags/${FMC_VERSION}.tar.gz"
# ---- vpp ----
FROM base AS vpp
ARG VPP_VERSION
ARG VPP_TAR
WORKDIR /out/nxp/vpp
RUN fetch-artifact \
"${VPP_TAR}" \
"${VPP_VERSION}.tar.gz" \
"https://github.com/nxp-qoriq/vpp/archive/refs/tags/${VPP_VERSION}.tar.gz"
# ---- MUSL CC ----
FROM base AS aarch64_musl_cc
WORKDIR /out
RUN fetch-artifact \
"packages/aarch64-linux-musl-cross.tgz" \
"aarch64-linux-musl-cross.tgz" \
"https://musl.cc/aarch64-linux-musl-cross.tgz"
# ---- ASK ----
FROM base AS mono_ask
ARG MONO_ASK_VERSION
ARG MONO_ASK_TAR
WORKDIR /out/ask
RUN fetch-artifact \
"${MONO_ASK_TAR}" \
"${MONO_ASK_VERSION}.tar.gz" \
"https://github.com/we-are-mono/ASK/archive/refs/tags/${MONO_ASK_VERSION}.tar.gz"
# ---- libnfnetlink ----
FROM base AS libnfnetlink
ARG LIBNFNETLINK_VERSION
ARG LIBNFNETLINK_TAR
WORKDIR /out/ask/libnfnetlink
RUN fetch-artifact \
"${LIBNFNETLINK_TAR}" \
"${LIBNFNETLINK_VERSION}.tar.bz2" \
"https://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-${LIBNFNETLINK_VERSION}.tar.bz2"
# ---- libnfct ----
FROM base AS libnfct
ARG LIBNFCT_VERSION
ARG LIBNFCT_TAR
WORKDIR /out/ask/libnfct
RUN fetch-artifact \
"${LIBNFCT_TAR}" \
"${LIBNFCT_VERSION}.tar.xz" \
"https://www.netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-${LIBNFCT_VERSION}.tar.xz"
# ---- libmnl ----
FROM base AS libmnl
ARG LIBMNL_VERSION
ARG LIBMNL_TAR
WORKDIR /out/ask/libmnl
RUN fetch-artifact \
"${LIBMNL_TAR}" \
"${LIBMNL_VERSION}.tar.bz2" \
"https://www.netfilter.org/projects/libmnl/files/libmnl-${LIBMNL_VERSION}.tar.bz2"
# ---- tclap ----
FROM base AS tclap
ARG TCLAP_VERSION
ARG TCLAP_TAR
WORKDIR /out/ask/tclap
RUN fetch-artifact \
"${TCLAP_TAR}" \
"${TCLAP_VERSION}.tar.gz" \
"https://sourceforge.net/projects/tclap/files/tclap-${TCLAP_VERSION}.tar.gz"
# ---- libxml2 ----
FROM base AS libxml2
ARG LIBXML2_VERSION
ARG LIBXML2_TAR
WORKDIR /out/ask/libxml2
RUN fetch-artifact \
"${LIBXML2_TAR}" \
"${LIBXML2_VERSION}.tar.xz" \
"https://download.gnome.org/sources/libxml2/2.11/libxml2-${LIBXML2_VERSION}.tar.xz"
# ---- libcli ----
FROM base AS libcli
ARG LIBCLI_VERSION
ARG LIBCLI_TAR
WORKDIR /out/ask/libcli
RUN fetch-artifact \
"${LIBCLI_TAR}" \
"${LIBCLI_VERSION}.tar.gz" \
"https://github.com/dparrish/libcli/archive/refs/tags/V${LIBCLI_VERSION}.tar.gz"
# ---- libpcap ----
FROM base AS libpcap
ARG LIBPCAP_VERSION
ARG LIBPCAP_TAR
WORKDIR /out/ask/libpcap
RUN fetch-artifact \
"${LIBPCAP_TAR}" \
"${LIBPCAP_VERSION}.tar.xz" \
"https://www.tcpdump.org/release/libpcap-${LIBPCAP_VERSION}.tar.xz"
# ---- alpine rootfs ----
FROM base AS alpine_rootfs
ARG ALPINE_SERIES
ARG ALPINE_ARCH
ARG ALPINE_TAR
WORKDIR /out
RUN fetch-artifact \
"${ALPINE_TAR}" \
"alpine-minirootfs-${ALPINE_VER}-${ALPINE_ARCH}.tar.gz" \
"https://dl-cdn.alpinelinux.org/alpine/v${ALPINE_SERIES}/releases/${ALPINE_ARCH}/alpine-minirootfs-${ALPINE_VER}-${ALPINE_ARCH}.tar.gz"
# ---- nxp linux ----
FROM base AS nxp_linux
ARG NXP_VERSION
ARG NXP_TAR
WORKDIR /out/nxp/kernel
RUN fetch-artifact \
"${NXP_TAR}" \
"${NXP_VERSION}.tar.gz" \
"https://github.com/nxp-qoriq/linux/archive/refs/tags/${NXP_VERSION}.tar.gz"
# ---- crio ----
FROM base AS crio
ARG CRIO_VERSION
ARG CRIO_TAR
WORKDIR /out
RUN fetch-artifact \
"${CRIO_TAR}" \
"${CRIO_VERSION}.tar.gz" \
"https://storage.googleapis.com/cri-o/artifacts/${CRIO_VERSION}.tar.gz"
# ---- final exported artifact set ----
FROM scratch
COPY --from=kubelet /out/ /
COPY --from=kubeadm /out/ /
COPY --from=kubectl /out/ /
COPY --from=busybox /out/ /
COPY --from=e2fsprogs /out/ /
COPY --from=dpdk /out/ /
COPY --from=aarch64_musl_cc /out/ /
COPY --from=mono_ask /out/ /
COPY --from=vpp /out/ /
COPY --from=fmlib /out/ /
COPY --from=fmc /out/ /
COPY --from=libnfnetlink /out/ /
COPY --from=libnfct /out/ /
COPY --from=libmnl /out/ /
COPY --from=libcli /out/ /
COPY --from=libpcap /out/ /
COPY --from=libxml2 /out/ /
COPY --from=tclap /out/ /
COPY --from=alpine_rootfs /out/ /
COPY --from=nxp_linux /out/ /
COPY --from=crio /out/ /