Add containerfile element
This is a base element which uses a containerfile (Dockerfile) to build a container image, then the filesystem is extracted from that image and forms the root of the dib image. You can add as little or as much to the dockerfile as desired. Change-Id: I4e821aa2ce7feb8841ef31da56de1a31aa9218b5
This commit is contained in:
James E. Blair
committed by
Ian Wienand
parent
34de4ebd6e
commit
edff632186
11 changed files with 65 additions and 0 deletions
@@ -29,6 +29,7 @@
- ubuntu-minimal/xenial-build-succeeds
- ubuntu-minimal/bionic-build-succeeds
- ubuntu-minimal/focal-build-succeeds
- containerfile/focal-build-succeeds
- job:
name:dib-functests-image
9
diskimage_builder/elements/containerfile/README.rst
Normal file
9
diskimage_builder/elements/containerfile/README.rst
Normal file
@@ -0,0 +1,9 @@
=============
containerfile
=============
Base element for creating images from container files (aka
Dockerfiles).
To use this element, create a container file (Dockerfile), and supply
the path to that file in the environment variable `DIB_CONTAINER_FILE`.
@@ -0,0 +1 @@
operating-system
42
diskimage_builder/elements/containerfile/root.d/08-containerfile
Executable file
42
diskimage_builder/elements/containerfile/root.d/08-containerfile
Executable file
@@ -0,0 +1,42 @@
#!/bin/bash
#
# Copyright 2015 Hewlett-Packard Development Company, L.P.
# Copyright 2019 Red Hat, INC.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
if [ -f ${TARGET_ROOT}/.extra_settings ] ; then
. ${TARGET_ROOT}/.extra_settings
fi
[ -n "$DIB_CONTAINER_FILE" ]
# Use the image cache directory as the default context, so anything
# there is automatically available for COPY commands.
DIB_CONTAINER_CONTEXT=${DIB_CONTAINER_CONTEXT:-${DIB_IMAGE_CACHE}/containerfile}
mkdir -p $DIB_CONTAINER_CONTEXT
podman build -t dib-work-image -f $DIB_CONTAINER_FILE $DIB_CONTAINER_CONTEXT
container=$(podman run -d dib-work-image /bin/sh)
podman export $container | sudo tar -C $TARGET_ROOT --numeric-owner -xf -
podman rm $container
podman rmi dib-work-image
sudo rm -f ${TARGET_ROOT}/.extra_settings
@@ -0,0 +1,2 @@
Verify we can build an image from a containerfile.
@@ -0,0 +1 @@
openstack-ci-mirrors
@@ -0,0 +1,2 @@
# For the openstack-ci-mirrors element
export DISTRO_NAME=ubuntu
@@ -0,0 +1,3 @@
path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
path="$( dirname $path)"
export DIB_CONTAINER_FILE="$path/files/Dockerfile"
@@ -0,0 +1,2 @@
FROMdocker.io/library/ubuntu:focal
RUN touch /testfile
@@ -0,0 +1 @@
tar
@@ -4,5 +4,6 @@
- ensure-pip
- bindep
- dib-setup-gate-mirrors
- ensure-podman
- dib-functests
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.