- Shell 51.9%
- Dockerfile 47.7%
- Python 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
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
|
||
| .forgejo/workflows | ||
| .github | ||
| Images | ||
| .devfile.yaml | ||
| AGENTS.md | ||
| README.md | ||
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.
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:
Images/AsteriskImages/FreeSwitchImages/GoBetweenImages/MariaDBImages/WebImages/eNMSImages/iDRACExporter
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:
- Verify base-image and downloaded dependency versions against the authoritative upstream release and migration notes.
- Update the Dockerfile and any files copied from its build context together.
- Build every platform listed for that image in the workflow, or clearly record why a platform could not be tested.
- Exercise the container's entrypoint, version command, or health check where practical.
- Run
git diff --checkand 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.