Packfile is an abstraction for writing modular Cloud Native Buildpacks. It enables you to efficiently build OCI (Docker) images using declarative TOML, YAML, or Go.
Features:
- Can be used to build modular buildpacks.
- Intelligently determines what layers need to be rebuilt, and only rebuilds those layers.
- Builds OCI image layers in parallel.
- Builds OCI images that are fully reproducible.
- Builds OCI images with swappable base images (compatible with
pack rebase
, so no containers required). - Adds detailed metadata about OCI image contents.
Built on top of Cloud Native Buildpacks.
NOTE: Packfile is currently an untested proof-of-concept.
The pf
binary can be used:
- To convert a directory containing
packfile.toml
orpackfile.yaml
into a buildpack (with-i
). - To create a buildpack that will run
packfile.toml
orpackfile.toml
in an app directory (without-i
). - To create a buildpack from a compiled packfile binary and asset directory (with both
-p
and-i <asset-dir>
). - To create a buildpack from a compiled packfile binary and metadata (with both
-p
and-i <packfile>
). - On Linux as a buildpack that runs
packfile.toml
orpackfile.yaml
(when symlinked tobin/build
andbin/detect
).
./bin/tools
./bin/build
Buildpacks:
out/pf.tgz
can be used to buildtestdata/app
.testout/node-toml.tgz
is a Node.js engine buildpack built fromtestdata/node-toml
.testout/node-yaml.tgz
is a Node.js engine buildpack built fromtestdata/node-yaml
.testout/node-go.tgz
is a Node.js engine buildpack built fromtestdata/node-go
.testout/npm-toml.tgz
is an NPM buildpack built fromtestdata/npm-toml
.testout/npm-yaml.tgz
is an NPM buildpack built fromtestdata/npm-yaml
.testout/npm-go.tgz
is an NPM buildpack built fromtestdata/npm-go
.testout/ruby-yaml.tgz
is a Ruby buildpack built fromtestdata/ruby-yaml
.testout/bundler-yaml.tgz
is a Bundler buildpack built fromtestdata/bundler-yaml
.testout/ytt-yaml.tgz
is a buildpack that builds YTT fromtestdata/ytt-yaml
.
./bin/test