Files
fluffy-pancake/Containerfile
T

79 lines
3.5 KiB
Docker

###############################################################################
# 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: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.
# 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 \
for s in /ctx/build/*.sh; do echo "Running $s" && sh "$s" || exit 1; done
# 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
### LINTING
## Verify final image and contents are correct.
RUN bootc container lint