You must create the image you want to use as your custom build image.
Procedure
-
Starting with an empty directory, create a file named
Dockerfile
with the following content:FROM docker.io/centos:7 RUN yum install -y buildah # For simplicity, /tmp/build contains the inputs we’ll be building when we # run this custom builder image. Normally the custom builder image would # fetch this content from some location at build time. (e.g. via git clone). ADD Dockerfile.sample /tmp/input/Dockerfile ADD build.sh /usr/bin RUN chmod a+x /usr/bin/build.sh # /usr/bin/build.sh contains the actual custom build logic that will be executed when # this custom builder image is executed. ENTRYPOINT ["/usr/bin/build.sh"]
-
In the same directory, create a file named
Dockerfile.sample
. This file will be included in the custom build image and defines the image that will be produced by the custom build:FROM docker.io/centos:7 RUN touch /tmp/built
-
In the same directory, create a file named
build.sh
. This file contains the logic that will be executed when the custom build runs:#!/bin/sh # Note that in this case the build inputs are part of the custom builder image, but normally this # would be retrieved from an external source. cd /tmp/input # OUTPUT_REGISTRY and OUTPUT_IMAGE are env variables provided by the custom # build framework TAG="${OUTPUT_REGISTRY}/${OUTPUT_IMAGE}" # performs the build of the new image defined by Dockerfile.sample buildah --storage-driver vfs bud --isolation chroot -t ${TAG} . # buildah requires a slight modification to the push secret provided by the service # account in order to use it for pushing the image cp /var/run/secrets/openshift.io/push/.dockercfg /tmp (echo "{ \"auths\": " ; cat /var/run/secrets/openshift.io/push/.dockercfg ; echo "}") > /tmp/.dockercfg # push the new image to the target for the build buildah --storage-driver vfs push --tls-verify=false --authfile /tmp/.dockercfg ${TAG}