1+ FROM centos:8 as centos8
2+
3+ ARG TARGETARCH
4+ ARG DIR=centos8-${TARGETARCH}-rpms
5+ ARG PKGS=".common[],.rpms[]"
6+ ARG BUILD_TOOLS="createrepo_c genisoimage dnf-plugins-core"
7+
8+ ENV LANG=en_US.UTF-8
9+ ENV LC_ALL=en_US.UTF-8
10+
11+ RUN rm -f /etc/yum.repos.d/CentOS-*.repo \
12+ && if [ "$TARGETARCH" = "amd64" ]; then \
13+ BASEOS="http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/"; \
14+ APPSTREAM="http://vault.centos.org/8.5.2111/AppStream/x86_64/os/"; \
15+ else \
16+ BASEOS="http://vault.centos.org/8.5.2111/BaseOS/aarch64/os/"; \
17+ APPSTREAM="http://vault.centos.org/8.5.2111/AppStream/aarch64/os/"; \
18+ fi \
19+ && echo "[BaseOS]" > /etc/yum.repos.d/centos8-vault.repo \
20+ && echo "name=CentOS-8 BaseOS" >> /etc/yum.repos.d/centos8-vault.repo \
21+ && echo "baseurl=$BASEOS" >> /etc/yum.repos.d/centos8-vault.repo \
22+ && echo "enabled=1" >> /etc/yum.repos.d/centos8-vault.repo \
23+ && echo "gpgcheck=0" >> /etc/yum.repos.d/centos8-vault.repo \
24+ && echo "[AppStream]" >> /etc/yum.repos.d/centos8-vault.repo \
25+ && echo "name=CentOS-8 AppStream" >> /etc/yum.repos.d/centos8-vault.repo \
26+ && echo "baseurl=$APPSTREAM" >> /etc/yum.repos.d/centos8-vault.repo \
27+ && echo "enabled=1" >> /etc/yum.repos.d/centos8-vault.repo \
28+ && echo "gpgcheck=0" >> /etc/yum.repos.d/centos8-vault.repo \
29+ && dnf --disablerepo="*" --enablerepo="BaseOS,AppStream" clean all \
30+ && dnf --disablerepo="*" --enablerepo="BaseOS,AppStream" makecache
31+
32+ RUN dnf install -y --setopt=tsflags=nodocs --disablerepo="*" --enablerepo="BaseOS,AppStream" $BUILD_TOOLS \
33+ && dnf clean all
34+
35+ WORKDIR /package
36+
37+ COPY packages.yaml .
38+ COPY --from=mikefarah/yq:4.11.1 /usr/bin/yq /usr/bin/yq
39+
40+ RUN mkdir -p ${DIR} \
41+ && yq eval "${PKGS}" packages.yaml | while read pkg; do \
42+ if [ -n "$pkg" ]; then \
43+ echo "Downloading $pkg..."; \
44+ dnf install -y --downloadonly --downloaddir=${DIR} --disablerepo="*" --enablerepo="BaseOS,AppStream" $pkg || echo "not found: $pkg"; \
45+ fi; \
46+ done
47+
48+ RUN createrepo_c ${DIR} \
49+ && genisoimage -r -o ${DIR}.iso ${DIR}
50+
51+ FROM scratch
52+ COPY --from=centos8 /package/*.iso /
0 commit comments