You may specify exactly what buildpacks are used during the build process by referencing them with a URI in any of the following formats.
| Type | Format |
|---|---|
| Relative | <path> |
| Filesystem | file://[<host>]/<path> |
| URL | http[s]://<host>/<path> |
| Docker | docker://[<host>]/<path>[:<tag>⏐@<digest>] |
| CNB Builder Resource | urn:cnb:builder[:<id>[@<version>]] |
| CNB Registry Resource | urn:cnb:registry[:<id>[@<version>]] |
When a string does not include a scheme prefix (ex. docker://) and also does not match a path on the filesystem,
a platform may attempt to resolve it to a URI in the following order:
urn:cnb:builder URIdocker:// URIurn:cnb:registry URIIf you need to disambiguate a particular reference, use a fully qualified URI.
The --buildpack parameter accepts a URI in any of the formats described above.
For this example we will use a few buildpacks from our samples repo.
pack build sample-java-maven-app \
--builder cnbs/sample-builder:alpine \
--buildpack samples/java-maven \
--buildpack samples/buildpacks/hello-processes/ \
--buildpack docker://cnbs/sample-package:hello-universe \
--path samples/apps/java-maven/
Multiple buildpacks can be specified, in order, by supplying:
--buildpackmultiple times, or- a comma-separated list to
--buildpack(without spaces)
Similarly, it is possible to provide extensions at build time:
pack build [...] --extension=foo [...]`
The project.toml format allows for Buildpack URIs to be specified in the [[io.buildpacks.group]] table with the uri key.
[_]
schema-version = "0.2"
id = "sample-java-maven-app"
name = "Sample Java App"
version = "1.0.0"
[[io.buildpacks.group]]
uri = "samples/java-maven"
[[io.buildpacks.group]]
uri = "samples/buildpacks/hello-processes/"
[[io.buildpacks.group]]
uri = "docker://cnbs/sample-package:hello-universe"
A path to a directory†, tar file, or tgz file
./my/buildpack/./my/buildpack.tgz/home/user/my/buildpack.tgzfile:///my/buildpack.tgzfile:///home/user/my/buildpack.tgzA URL to a tar or tgz file containing a buildpackage
http://example.com/my/buildpack.tgzhttps://example.com/my/buildpack.tgzA Docker image containing a buildpackage
docker://gcr.io/distroless/nodejsdocker:///ubuntu:latestdocker:///ubuntu@sha256:45b23dee08...A buildpack located in a CNB Builder
urn:cnb:builder:bp.idurn:cnb:builder:bp.id@bp.versionA buildpack located in a CNB Registry
urn:cnb:registry:bp-idurn:cnb:registry:bp-id@bp.version† Directory buildpacks are not currently supported on Windows.
‡ Version may be omitted if there is only one buildpack in the builder matching the id.