containers/bifrost/Containerfile
# bifrost (the `bifrost-doris` build) — Iceberg commits into Apache Doris, the
# image the Kubernetes package runs. `bifrost doris k8s --image <this> --out DIR`
# renders the StatefulSet + Secret + cursor volume that start it; the systemd
# package is the same binary installing itself (`bifrost doris install`).
#
# Like containers/knut-flight: the binary is built by the Build Thing (row
# `bifrost-doris`, inside the pinned toolchain container — never on the host)
# and copied into a slim runtime base. The context is a staging dir holding the
# release binary as `bifrost`:
#
# dwarves buildthing knut --variant bifrost-doris # → target/release/bifrost
# mkdir -p ctx && cp <target>/release/bifrost ctx/
# podman build -t bifrost-doris:<ver> -f containers/bifrost/Containerfile ctx
#
# The same Containerfile packages every bifrost row — only the binary differs.
# Pick the smallest build that has what the site runs:
#
# bifrost-doris Doris + FalkorDB verbs, generic REST catalog
# bifrost-falkordb `bifrost falkordb k8s`, no Doris, generic REST
# bifrost-falkordb-<vendor> + ONE catalog: aistor|polaris|unity|gravitino|grpc
# bifrost-full every sink, every catalog
#
# dwarves buildthing knut --variant bifrost-falkordb-polaris
# podman build -t bifrost-falkordb-polaris:<ver> -f containers/bifrost/Containerfile ctx
#
# Skidbladnir renders no ConfigMap, so a mapping file the k8s package names must
# be COPIED into the image at an absolute path (`bifrost falkordb k8s` refuses a
# relative one).
#
# Config is the command line the k8s package renders; secrets come from the
# Secret as env only: MINIO_ACCESS_KEY, MINIO_SECRET_KEY, DORIS_USER,
# DORIS_PASSWORD, and optionally BIFROST_S3_CA_PEM (the CA as PEM text),
# BIFROST_FALKOR_URL, BIFROST_CATALOG_CREDENTIAL, BIFROST_CATALOG_TOKEN.
# The cursor lives on the volume at /var/lib/bifrost.
ARG DEBIAN_TAG=trixie-slim
FROM docker.io/library/debian:${DEBIAN_TAG} AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --no-create-home --uid 10056 bifrost \
&& mkdir -p /var/lib/bifrost && chown bifrost /var/lib/bifrost
COPY bifrost /usr/local/bin/bifrost
RUN chmod 0755 /usr/local/bin/bifrost
USER bifrost
WORKDIR /var/lib/bifrost
ENTRYPOINT ["/usr/local/bin/bifrost"]