Once
Get started
← Changelog

Container images without Docker or scripts

Native container images are assembled by Once itself. oci_image can extend a base image, name several tags, and combine with other platforms through the new oci_index. oci_pull fetches a base by content digest, so it is immutable and cached. oci_push publishes an image or multi-platform index with the same digest Once built, and can sign it with cosign. oci_import brings in an image archive exported elsewhere. oci_load loads an archive into Docker or Podman. Layers can be gzip-compressed and carry symbolic links.

Dockerfile images no longer need Python. Each instruction is a single Docker build step, and ARG and ENV values are resolved up front. A Dockerfile can use native executables and pinned images as named build contexts, instead of copying files into its context.

Two correctness fixes reach beyond containers. Changing only a file's permission bits, such as making a script executable, now invalidates cached results built from it. Copied directory trees keep their empty directories.