agaric-coop/box/provisioning/docker/save-image.sh

42 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
#
# Commit a Docker image and save it to an archive (tar).
#
# Required configuration (in config.yml):
#
# docker_container_name: drupal-vm
# docker_image_name: drupal-vm
# docker_image_path: ~/Downloads
#
# Exit on any individual command failure.
set -e
# Include YAML parser.
source provisioning/docker/parse-yaml.sh
# Pretty colors.
red='\033[0;31m'
green='\033[0;32m'
neutral='\033[0m'
# Set variables, read from config.yml if available.
# TODO: This could definitely be more intelligent!
if [ -f 'config.yml' ]; then
container_name=$(parse_yaml config.yml docker_container_name)
image_name=$(parse_yaml config.yml docker_image_name)
image_path=$(parse_yaml config.yml docker_image_path)
else
container_name=$(parse_yaml default.config.yml docker_container_name)
image_name=$(parse_yaml default.config.yml docker_image_name)
image_path=$(parse_yaml default.config.yml docker_image_path)
fi
image_full_path="$image_path/$image_name.tar.gz"
image_full_path="${image_full_path/#\~/$HOME}" # Expand ~ to $HOME.
# Save the image.
printf "\n"${green}"Saving Docker container to $image_full_path..."${neutral}"\n"
docker commit $container_name $image_name
docker save $image_name | gzip -1 > $image_full_path
printf ${green}"...done!"${neutral}"\n"