This repository hosts the Dockerfiles and helper scripts that produce the official OpenAF container images. They ship the OpenAF runtime, optional tooling, and pre-configured runtimes for common deployment scenarios.
# Pull the latest stable OpenAF runtime
docker pull openaf/openaf:latest
# Start an interactive shell with OpenAF available on the PATH
docker run --rm -ti openaf/openaf:latest
# Run a script mounted from the host
docker run --rm -ti \
-v "$PWD/scripts":/scripts \
-e OPENAF=/scripts/example.js \
openaf/openaf:latest| Variable | Purpose | Example |
|---|---|---|
OPACKS |
Comma-separated list of oPacks to install on the first run (fetched from configured repositories). | OPACKS=APIs,Docker,Mongo |
OPACKS_DIR |
Folder inside the container containing .opack files or unpacked oPack directories to install on the first run. |
OPACKS_DIR=/opacks |
OPACKS_DB |
Comma-separated list of remote oPack database URLs to add before installing oPacks. | OPACKS_DB=https://my.repo/opack.db,https://mirror/opacks.json |
OPENAF |
Path to a script inside the container that should be executed with openaf. |
OPENAF=/srv/jobs/cleanup.js |
OJOB |
Path to an oJob definition (file or zip) that will be executed with ojob. |
OJOB=/ojobs/main.yaml |
OPACK_EXEC |
Name of an oPack executable to run through opack exec. Arguments after docker run are passed along. |
OPACK_EXEC=resttool |
OAFP |
When present, runs oafp instead of the default entrypoint logic. Commonly set to -h to show help. |
OAFP=-h |
The entrypoint installs requested oPacks only on the first run (tracked through /openaf/.installed). Without any of the variables above, the container starts an interactive shell with OpenAF tools on the PATH.
UBI-based images also expose JVM_MEMMXPERC and JVM_MEMMSPERC to influence the JVM memory percentage flags that get injected into JAVA_ARGS.
docker build \
-t openaf/openaf:dev \
--build-arg DIST=nightly \
--build-arg OPENAFDIST=nightly \
https://github.com/OpenAF/openaf-dockers.git#:openaf| Build arg | Description |
|---|---|
DIST |
Selects the distribution tag for the resulting image (e.g., latest, nightly, t8). |
OPENAFDIST |
Chooses which OpenAF build to embed (empty string for stable, nightly, edge, etc.). |
Core runtimes
openaf/openaf– Minimal Alpine-based runtime with OpenJDK 21. Docsopenaf/openaf-console– Adds the OpenAF console tooling. Docsopenaf/openaf-ojob– Boots into/openaf/main.yamlfor oJob workloads. Docsopenaf/openaf-ojobc– oJob runtime with theojob-commonoPack pre-installed. Docsopenaf/ojobrt– Generic oJob runtime that can fetch jobs from local, HTTP, or S3 sources. Docs
Runtime variants
openaf/openaf-edge– Alpine edge base with a slim Java 25 runtime and mimalloc. Docsopenaf/openaf-8– Alpine base with OpenJDK 8 for legacy workloads. Docsopenaf/openaf-11/-13/-15– Experimental builds pinned to specific OpenJDK versions. Docs, Docs, Docsopenaf/openaf-ubi– Red Hat UBI 9 minimal image with OpenJDK 21 and bash completion. Docsopenaf/openaf-ubi-8– UBI-based legacy build with OpenJDK 8 and auto-complete helpers. Docsopenaf/openaf-j9– Eclipse OpenJ9 JVM tuned for container workloads. Docsopenaf/openaf-deb– Ubuntu rolling base with bundled Java 21 and bash. Docs
Application images
openaf/nattrmon– Containerized nAttrMon with multiple configuration backends (local, S3, HTTP). Docs
Utility images (under openaf.io/)