#!/bin/bash ###### # This script builds the docker image locally # It expects docker to be logged in to ECR (see aws-login) set -e VERBOSE=0 DIR=`dirname $(realpath "${BASH_SOURCE[0]}")` OLDDIR=`pwd` cd "$DIR" source "$DIR/../config" source "$DIR/libs.sh" usage() { echo "Usage: $0 [-h] [-v] [-t: version] -I [image type, see below] " 1>&2; echo "This script builds framework docker images, the following options are available:" 1>&2; echo " -h: This message" 1>&2; echo " -I: Image (webserver or worker)" 1>&2; echo " Image types (at least one, otherwise the script does nothing)" 1>&2; echo " -a: All, same as ub" 1>&2; echo " -u: Unit" 1>&2; echo " -b: Base" 1>&2; echo " -d: Debug" 1>&2; echo " -t: Project version, this will be used as base for the docker image tag (default: local)" 1>&2; echo " -v: Verbose" 1>&2; exit 1; } BASE_MODE=0 UNIT_MODE=0 DEBUG_MODE=0 TAG="local" TYPE="webserver" while getopts "I:t:hvaubd" o; do case "${o}" in I) TYPE="${OPTARG}" ;; b) BASE_MODE=1 ;; u) UNIT_MODE=1 ;; d) DEBUG_MODE=1 ;; a) BASE_MODE=1 UNIT_MODE=1 ;; t) TAG=${OPTARG} ;; v) VERBOSE=1 ;; h) usage ;; *) printerr "Unsupported option ${o}" usage ;; esac done cd ".." # STANDARD MODE if [[ $BASE_MODE -gt 0 ]]; then DOCKERFILE=`mktemp -t dockerfile.XXXXX` msg "Generating base dockerfile '$DOCKERFILE'" OPTS="b" if [[ $VERBOSE -eq 1 ]]; then OPTS+="v" fi $DIR/generateDockerfile.sh -I "${TYPE}" -$OPTS -o $DOCKERFILE msg "Building project image $TAG" docker build -t $PROJECT_REPOSITORY/$PROJECT_GROUP/$PROJECT_BUILDNAME:$TAG -f $DOCKERFILE . fi # UNIT MODE if [[ $UNIT_MODE -gt 0 ]]; then DOCKERFILE=`mktemp -t dockerfile.XXXXX` msg "Generating unit dockerfile '$DOCKERFILE'" OPTS="u" if [[ $VERBOSE -eq 1 ]]; then OPTS+="v" fi $DIR/generateDockerfile.sh -$OPTS -o $DOCKERFILE msg "Building project image $TAG" docker build -t $PROJECT_REPOSITORY/$PROJECT_GROUP/$PROJECT_BUILDNAME:$TAG-unit -f $DOCKERFILE . fi # DEBUG MODE if [[ $DEBUG_MODE -gt 0 ]]; then DOCKERFILE=`mktemp -t dockerfile.XXXXX` msg "Generating debug dockerfile '$DOCKERFILE'" OPTS="d" if [[ $VERBOSE -eq 1 ]]; then OPTS+="v" fi $DIR/generateDockerfile.sh -$OPTS -o $DOCKERFILE msg "Building project image $TAG" docker build -t $PROJECT_REPOSITORY/$PROJECT_GROUP/$PROJECT_BUILDNAME:$TAG-debug -f $DOCKERFILE . fi