Over the past year, one of the major things that has happened with Paketo Buildpacks is the addition of Red Hat Universal Base Image (UBI) 9 and UBI 10 builders and the support of multiple architecture builds. Paketo Buildpacks now publishes builders based on UBI 9 and UBI 10 with multi-arch output builds.
First, we will discuss where the repositories and images live.
UBI 9: Base images & builders
UBI 9 base images are built from the Paketo Buildpacks repository with all the available published images listed on the release notes. Today, those base images cover Node.js and Java stacks. As more languages are added, expect additional base images. UBI 9 builders images are published from the repository to Dockerhub.
The available builder images:
- paketobuildpacks/ubi-9-builder
- paketobuildpacks/ubi-9-builder-buildpackless
UBI 10: Base images & builders
UBI 10 base images follow the same layout with the source repository and the available container images listed in the releases notes.
UBI 10 builders published from the repository to Dockerhub with the following available builder images:
- paketobuildpacks/ubi-10-builder
- paketobuildpacks/ubi-10-builder-buildpackless
UBI 9 and 10 builders currently support Node.js builds. Java support for UBI 9 and UBI 10 is still in progress.
For UBI8 each builder image has its own repository. UBI 9 and UBI 10 are published by one repo each. You can find further details on how builder and base images publishing changed in the Paketo article, What has changed on how we ship the Builders and the base images.
For a full list of the available builders, you can use the pack CLI with the following command:
pack builder suggest The output should include the UBI builders with the others.
Multi-arch support on UBI 9 & 10 builders
Recently, Paketo Buildpacks added support for multi-architecture builds. The available options are arm64 and amd64. Choosing which architecture to build your application is as easy as adding an extra flag to specify the desired architecture. Let’s see how this works in practice.
In the previous article, we covered how to install and properly configure the pack CLI. You also need a sample Node.js application. In case you do not have one, clone the Paketo samples repository as follows:
git clone https://github.com/paketo-buildpacks/samplesThe next step is to select a builder. Each of the UBI builders in the following list can build images for linux/amd64 and linux/arm64:
- docker.io/paketobuildpacks/ubi-9-builder
- docker.io/paketobuildpacks/ubi-10-builder
In our example, we will use the latest major version of Red Hat Enterprise Linux (RHEL): ubi-10-builder.
Select the architecture by specifying the --platform flag:
pack build my-node-app \
--builder index.docker.io/paketobuildpacks/ubi-10-builder \
--path ./samples/nodejs/npm \
--platform linux/arm64Current supported platforms are linux/amd64 and linux/arm64.
We welcome feedback
This article explained where UBI 9 and UBI 10 builder and base images live and how to request arm64 or amd64 output with pack build. If the community is interested in seeing Paketo Buildpacks support s390x and ppc64le, we would love to hear from you. We hope you're as excited about these updates as we are. Happy building!