No description
  • Shell 51.9%
  • Dockerfile 47.7%
  • Python 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Entrapta Jones c173512263
All checks were successful
Core Docker images / docker (UPSTREAM_IMAGE=ghcr.io/zalando/spilo-18-dev:6393e80e POSTGRES_MAJORS=16 17 18 VCHORD_VERSION=1.1.1 , kristianfoss/psql:core, Images/PSQL, PostgreSQL image based on Spilo with PostgreSQL 16, 17, and 18 pgvector and VectorChord packages., psql, l… (push) Successful in 3m19s
Core Docker images / docker (kristianfjones/kea:vps1-core, Images/Kea, Source-built ISC Kea with PostgreSQL support and without MySQL support., kea, linux/amd64, Images/Kea/README.md, kristianfjones/kea:vps1-core, Kea DHCP, vps1-core) (push) Successful in 1m27s
Core Docker images / docker (kristianfjones/pgpool:latest, Images/PGPool, Pgpool-II built with OpenSSL, LDAP, and memcached support., pgpool, linux/amd64, Images/PGPool/README.md, kristianfjones/pgpool:latest, Pgpool-II, latest) (push) Successful in 1m32s
Core Docker images / docker (kristianfjones/upnp:jobs, Images/UPNP, Minimal Alpine image containing miniupnpc., upnp, linux/amd64, Images/UPNP/README.md, kristianfjones/upnp:jobs, UPnP client tools, jobs) (push) Successful in 1m31s
Core Docker images / docker (kristianfoss/netbox:core, Images/NetBox, Customized NetBox Docker image with selected plugins and static assets., netbox, linux/amd64,linux/arm64, Images/NetBox/README.md, kristianfoss/netbox:core, NetBox, core) (push) Successful in 1m47s
Core Docker images / docker (kristianfoss/postfix:core, Images/Postfix, Alpine-based Postfix relay with PostgreSQL and LDAP maps, rsyslog output, and runit supervision., postfix, linux/amd64,linux/arm64, Images/Postfix/README.md, kristianfoss/postfix:core, Postfix relay, c… (push) Successful in 1m45s
kubectl / docker (Minimal Alpine image containing the version-selected kubectl client., Images/KubeCTL/README.md, kubectl, v1.23.10) (push) Successful in 1m35s
kubectl / docker (Minimal Alpine image containing the version-selected kubectl client., Images/KubeCTL/README.md, kubectl, v1.24.4) (push) Successful in 1m32s
Core Docker images / dockerhub-description (Images/Kea/README.md, kristianfjones/kea) (push) Successful in 31s
Core Docker images / dockerhub-description (Images/NetBox/README.md, kristianfoss/netbox) (push) Successful in 31s
Core Docker images / dockerhub-description (Images/PSQL/README.md, kristianfoss/psql) (push) Successful in 32s
feat(Images.PSQL): Work on building the custom extensions for v16-18
2026-09-19 00:58:04 +00:00
.forgejo/workflows feat(Images.PSQL): Work on building the custom extensions for v16-18 2026-09-19 00:58:04 +00:00
.github ci(GH): Remove GitHub actions as we move to our internal runners 2026-09-17 22:06:30 +00:00
Images feat(Images.PSQL): Work on building the custom extensions for v16-18 2026-09-19 00:58:04 +00:00
.devfile.yaml ide: Work on getting pods grouped on the same node, increase RAM allocation and mess around with Eclipse Che some more 2026-08-12 18:04:49 +00:00
AGENTS.md docs: Improve what was meant to be replaced 2 years ago... oops. 2026-08-10 12:23:10 +00:00
README.md feat(Images.PSQL): Update the docs, and add in the WIP PSQL image 2026-09-17 23:18:11 +00:00

Core Docker images

Core Docker is K-FOSS's collection of purpose-built container images for infrastructure, networking, observability, and MCP workloads. Each image has an independent build context under Images/; this repository is not a single application or a Docker Compose stack.

Images on the default branch are built by GitHub Actions or the equivalent Forgejo Actions workflows and published to Docker Hub and the Forgejo container registry. The Forgejo workflows are in .forgejo/workflows/ and target a runner with the docker label, using the YXL runner's Docker endpoint. Some directories are retained as experiments or historical build contexts and are not currently published by CI.

Published images

The main build workflow runs after pushes to main and twice daily at 05:30 and 17:30 UTC.

Build context Published image Platforms
Images/NetBox kristianfoss/netbox:core amd64, arm64
Images/UPNP kristianfjones/upnp:jobs amd64
Images/MCP/MCPHub kristianfjones/mcphub:latest amd64
Images/PGPool kristianfjones/pgpool:latest amd64
Images/PSQL kristianfoss/psql:core amd64
Images/Llama kristianfoss/llama:core amd64
Images/Docker kristianfoss/docker:core-mcp amd64, arm64
Images/MCP/NetworkTools kristianfoss/mcp-domaintools:core-mcp amd64, arm64
Images/MCP/Search kristianfoss/mcp-search:core-mcp amd64, arm64
Images/MCP/Docker kristianfoss/docker-mcp:testing amd64, arm64
Images/OpenWebUI kristianfoss/openwebui:core-mcp amd64, arm64
Images/Postfix kristianfoss/postfix:core amd64, arm64
Images/Kea kristianfjones/kea:vps1-core amd64
Images/PGExporter kristianfjones/pgexporter-docker:core0 amd64, arm64
Images/CoreDNS kristianfjones/coredns-docker:core0 amd64, arm64
Images/KeaAdmin kristianfjones/kea:vps1-admin amd64
Images/LDAP kristianfjones/library-openldap:latest amd64
Images/NetboxDHCP kristianfjones/netbox-dhcp:main amd64

The separate kubectl workflow builds Images/KubeCTL for amd64 and arm64. It currently publishes kristianfjones/kubectl:v1.24.4 and kristianfjones/kubectl:v1.23.10.

Other build contexts

The following directories contain Dockerfiles but their build steps are disabled or absent from the current workflows:

Treat these as experimental or historical until their build is restored and validated. A Dockerfile's presence alone does not mean its image is published.

Build an image locally

Forgejo runner prerequisites

Enable Actions for the repository, register an online runner with the docker label, and configure its job container to provide a Docker-compatible endpoint at tcp://127.0.0.1:2376 with /certs/client mounted. Add the DH_USER and DH_TOKEN repository secrets for Docker Hub publishing. Add REGISTRY_PASSWORD and, optionally, FORGEJO_REGISTRY_USERNAME for Forgejo registry publishing; the username defaults to the Forgejo repository owner. Forgejo images use the <forgejo-host>/<owner>/<repository>/<image>:<tag> naming convention. The workflows install their Docker client and JavaScript-action dependencies in the Ubuntu 24.04 job container; the runner must also support privileged containers and ARM64 QEMU.

Run builds from the repository root and use the image directory as the build context:

docker build --pull --tag core-docker/kea:local Images/Kea

For a multi-platform validation that does not publish an image:

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --tag core-docker/netbox:local \
  Images/NetBox

Build arguments are image-specific. For example, the kubectl image accepts VERSION and receives TARGETARCH from BuildKit:

docker buildx build \
  --build-arg VERSION=v1.24.4 \
  --platform linux/amd64 \
  --tag core-docker/kubectl:local \
  Images/KubeCTL

Do not add --push to local validation commands unless you intend to publish to a registry and have verified the target tag.

Making changes

Keep changes scoped to one image unless a shared workflow change requires otherwise. When updating an image:

  1. Verify base-image and downloaded dependency versions against the authoritative upstream release and migration notes.
  2. Update the Dockerfile and any files copied from its build context together.
  3. Build every platform listed for that image in the workflow, or clearly record why a platform could not be tested.
  4. Exercise the container's entrypoint, version command, or health check where practical.
  5. Run git diff --check and review the final diff for credentials, mutable downloads, unintended files, and publishing changes.

There is no repository-wide test suite. A successful local image build and a focused runtime smoke test are the primary validation. GitHub Actions owns publishing; Docker Hub credentials are supplied through the DH_USER and DH_TOKEN repository secrets and must never be committed. After all active images in the daily workflow build successfully, the Kea and NetBox image READMEs are also published as their Docker Hub repository descriptions. Because Docker Hub descriptions belong to repositories rather than tags, Images/Kea/README.md describes the shared kristianfjones/kea repository, and the separately built vps1-admin tag cannot publish an independent Images/KeaAdmin/README.md overview.

Shared Dev Spaces container storage

This repository's devfile uses Kubedock for Docker-compatible run operations. Kubedock asks the OpenShift cluster runtime to pull images, so its node image cache is not stored in a workspace volume.

For local rootless Podman/Buildah pulls and builds, a Dev Spaces administrator can apply devspaces/container-images-pvc.yaml in a user's Dev Spaces project before starting a workspace. Dev Spaces mounts the claim at Podman's rootless image-store path in every workspace in that project. The claim requires a storage class that supports ReadWriteMany.

oc apply -f devspaces/container-images-pvc.yaml -n <devspaces-user-project>

The container storage database is not designed for concurrent writers. Stop other workspaces that use Podman or Buildah before modifying the shared store; concurrently running workspaces may use it read-only. For safe concurrent builds across users or projects, use a registry or a BuildKit registry cache instead of sharing this filesystem. The PVC is deliberately not part of the devfile lifecycle, so deleting this workspace does not delete the shared image store.

See AGENTS.md for repository-specific guidance for coding agents and automated contributors.