view docker/do_all.sh @ 105:b69056368901

docker: images optimisation: - reduced the number of layers by grouping many instructions - moved stuff which don't change a lot at the beginning, and hg/apt at the end - scripts are not now in scripts/ subdirectories - prosody.cfg.lua is added using ADD instead of getting it online - .hg/dirstate is copied in base (backend) and libervia, so mercurial revision is known - removed lot of useless WORKDIR instruction, they are replaced by "cd" inside RUN instructions - cleaning (apt-clean, rm) is done on the same instruction as the one than generate the data, to avoid useless data in layers
author Goffi <goffi@goffi.org>
date Sun, 28 Feb 2016 02:01:20 +0100
parents bcba1966e6db
children
line wrap: on
line source

#!/bin/sh

# This script build all container in the right order
# Copyright (C) 2014 Jérôme Poisson (goffi@goffi.org)

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.

# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

DIRS="base media sat_nomedia sat jp primitivus sat_pubsub prosody salut libervia data"
ACCOUNT="salutatoi"

ori_dir=$(pwd)

if [ $# -eq 0 ]; then
	cmd="build"
else
	case $1 in
		build)
			cmd="build"
			BEFORE="-t"
			AFTER="."
			;;
		push)
			cmd="push"
			TAG=":latest"
			;;
		pull)
			cmd="pull"
			TAG=":latest"
			;;
		*)
			printf "Invalid command ($1)\n"
			exit 1
			;;
	esac
	
	shift
fi

for cont_dir in $DIRS; do
	cont_name=$(grep -o "Salut à Toi/[^ ]\+" $cont_dir/Dockerfile | sed "s&Salut à Toi/&&" | tr '[:upper:]' '[:lower:]')
	cd "$cont_dir"
	printf "\n==> Doing a $cmd for $ACCOUNT/$cont_name in $cont_dir with extra [$@] <===\n\n"
	docker $cmd $BEFORE "$ACCOUNT/${cont_name}${TAG}" "$@" $AFTER
	err=$?
	cd "$ori_dir"
	if [ $err -ne 0 ]; then
		printf "$cmd of $cont_name failed (exit code $err), exiting\n"
		exit 1
	fi
done