ironic-python-agent/imagebuild/coreos/docker_build.bash
Jay Faulkner 40894614ac Uniquely identify builds to prevent race
In the original implementation of this, the latest running container
containing "PICKME" was selected for the container to export. This
creates a race condition.

Instead we now identify the image by a UUID created each run, so that
they will not overlap if multiple builds happen simultaneously.

Change-Id: Iaaf5683435f424517774067a1d95732ad096c988
2014-04-17 11:15:29 -07:00

33 lines
1009 B
Bash
Executable File

#!/bin/bash
#
# docker_build.bash - Prepares and outputs a tarball'd docker repository
# suitable for injection into a coreos pxe image
#
set -e
OUTPUT_FILE="oem/container.tar.gz"
# If there's already a container.tar.gz, don't overwrite it -- instead, bail
if [[ -e "${OUTPUT_FILE}" ]]; then
echo "${OUTPUT_FILE} already exists. Will not overwrite. Exiting."
exit 1
fi
# Build the docker image
cd ../../
docker build -t oemdocker .
cd -
# Create a UUID to identify the build
CONTAINER_UUID=`uuidgen`
# Export the oemdocker repository to a tarball so it can be embedded in CoreOS
# TODO: Investigate running a container and using "export" to flatten the
# image to shrink the CoreOS fs size. This will also require run.sh to
# use docker import instead of docker load as well.
docker run oemdocker echo $CONTAINER_UUID
CONTAINER=`docker ps -a --no-trunc |grep $CONTAINER_UUID|awk '{print $1}'|head -n1`
echo $CONTAINER
docker export $CONTAINER | gzip > ${OUTPUT_FILE}