############################################################################### # PROJECT NAME CONFIGURATION ############################################################################### # Name: fluffy-pancake # # IMPORTANT: Change "finpilot" above to your desired project name. # This name should be used consistently throughout the repository in: # - Justfile: export image_name := env("IMAGE_NAME", "your-name-here") # - README.md: # your-name-here (title) # - artifacthub-repo.yml: repositoryID: your-name-here # - custom/ujust/README.md: localhost/your-name-here:stable (in bootc switch example) # # The project name defined here is the single source of truth for your # custom image's identity. When changing it, update all references above # to maintain consistency. ############################################################################### ############################################################################### # 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 COPY build /build ## Alternative base images, no desktop included (uncomment to use): FROM quay.io/fedora/fedora-kinoite:43 # 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. # RUN rm /opt && mkdir /opt RUN --mount=type=bind,from=ctx,source=/,target=/ctx \ --mount=type=cache,dst=/var/cache \ --mount=type=cache,dst=/var/log \ --mount=type=tmpfs,dst=/tmp \ /ctx/build/10-build.sh # Erstelle einen "Drop-in" um den Befehl zu überschreiben RUN 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 ### LINTING ## Verify final image and contents are correct. RUN bootc container lint