diff --git a/Containerfile b/Containerfile index 835d682..0e4144a 100644 --- a/Containerfile +++ b/Containerfile @@ -18,61 +18,51 @@ ############################################################################### # MULTI-STAGE BUILD ARCHITECTURE ############################################################################### -# This Containerfile follows the Bluefin architecture pattern as implemented in -# @projectbluefin/distroless. The architecture layers OCI containers together: -# -# 1. Context Stage (ctx) - Combines resources from: -# - Local build scripts and custom files -# -# 2. Base Image Options: -# - `ghcr.io/ublue-os/silverblue-main:latest` (Fedora and GNOME) -# - `ghcr.io/ublue-os/base-main:latest` (Fedora and no desktop -# - `quay.io/centos-bootc/centos-bootc:stream10 (CentOS-based)` -# -# See: https://docs.projectbluefin.io/contributing/ for architecture diagram -############################################################################### - -# Context stage - combine local and imported OCI container resources FROM scratch AS ctx +# Kopiere die Build-Skripte und die neuen Konfigurations-Artefakte in den Kontext COPY build /build +COPY configs /configs +COPY scripts /scripts -## Alternative base images, no desktop included (uncomment to use): +############################################################################### +# BASE IMAGE +############################################################################### FROM quay.io/fedora/fedora-kinoite:44 -# FROM quay.io/centos-bootc/centos-bootc:stream10 - -## Alternative GNOME OS base image (uncomment to use): -# FROM quay.io/gnome_infrastructure/gnome-build-meta:gnomeos-nightly - -### /opt -## Some bootable images, like Fedora, have /opt symlinked to /var/opt, in order to -## make it mutable/writable for users. However, some packages write files to this directory, -## thus its contents might be wiped out when bootc deploys an image, making it troublesome for -## some packages. Eg, google-chrome, docker-desktop. -## -## Uncomment the following line if one desires to make /opt immutable and be able to be used -## by the package manager. +### /opt (Unverändert) # RUN rm /opt && mkdir /opt - +############################################################################### +# EXECUTION STAGE +############################################################################### +# Hier werden die Skripte aus dem Kontext-Stage ausgeführt RUN --mount=type=bind,from=ctx,source=/,target=/ctx \ + --mount=type=bind,from=ctx,source=/configs,target=/configs \ + --mount=type=bind,from=ctx,source=/scripts,target=/scripts \ --mount=type=cache,dst=/var/cache \ --mount=type=cache,dst=/var/log \ --mount=type=tmpfs,dst=/tmp \ for s in /ctx/build/*.sh; do echo "Running $s" && sh "$s" || exit 1; done +############################################################################### +# CONFIGURATION LAYER (Der "saubere" Teil) +############################################################################### -# Deklaration der Verzeichnisse für systemd-tmpfiles, um bootc-Linting-Warnungen zu vermeiden. -# Dies stellt sicher, dass /var/lib/dnf und /var/lib/rpm beim Booten sauber existieren. -RUN mkdir -p /etc/tmpfiles.d/ && \ - echo "d /var/lib/dnf 0755 root root -" > /etc/tmpfiles.d/bootc-fix.conf && \ - echo "d /var/lib/rpm 0755 root root -" >> /etc/tmpfiles.d/bootc-fix.conf && \ - mkdir -p /etc/systemd/system/bootc-fetch-apply-updates.service.d/ && \ - echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/bootc upgrade --staged --quiet" > \ - /etc/systemd/system/bootc-fetch-apply-updates.service.d/override.conf +# 1. Kopiere die Filesystem-Fixes (tmpfiles.d) +# COPY erstellt die Zielpfade automatisch, falls sie noch nicht existieren. +COPY configs/bootc-fix.conf /etc/tmpfiles.d/ -### LINTING -## Verify final image and contents are correct. +# 2. Kopiere den Systemd-Override (mit der neuen Update-Logik) +COPY configs/bootc-override.conf /etc/systemd/system/bootc-fetch-apply-updates.service.d/override.conf + +# 3. Kopiere das Benachrichtigungs-Skript +# Wichtig: Das Skript muss auf deinem Host bereits mit 'chmod +x' markiert sein! +COPY scripts/notify-bootc-user.sh /usr/bin/ + +############################################################################### +# LINTING +############################################################################### RUN bootc container lint +