#!/bin/bash # # Copyright (C) 2019 OX Software GmbH # # This file is part of OX Automation. # # OX Automation is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OX Automation 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with OX Automation. If not, see <http://www.gnu.org/licenses/>. # # # Authors: # Benedikt Kroening <benedikt.kroening@open-xchange.com> # set -e SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)" ## Help text show_usage() { echo -n " Build docker images with the help of the ox-installer scripts Easiest way to get a working image: $ ${0} foo bar Per component options (can be combined): --middleware Installs middleware components Installation types (not combineable): -s | --singlenode This will install and init an basic OX instance (db, mw, fe) Configuration options: --init This will start configuration scripts after component installation Examples: Singlenode setup with everything you need: $ ${0} --singlenode --dovecot " } ### reading config from command line; overriding defaults POSITIONAL=() while [[ $# -gt 0 ]] do key="$1" case $key in -h|--help) show_usage exit 0 shift ;; --debug) echo "WARNING: Debug flag set (--debug)" set -x shift ;; # -t|--type) # INSTALL_TYPE="$2" # shift # shift # ;; --middleware) export INSTALL_MIDDLEWARE=true shift ;; --frontend) export INSTALL_FRONTEND=true shift ;; --guard) export INSTALL_GUARD=true shift ;; --documents) export INSTALL_DOCUMENTS=true shift ;; --documentconverter) export INSTALL_DOCUMENTCONVERTER=true shift ;; -s|--singlenode) export INSTALL_TYPE=singlenode shift ;; --cluster) export INSTALL_TYPE=cluster shift ;; --config) exportProperties "$2" shift shift ;; # --repo-guard) # OX_REPO_GUARD="$2" # echo "WARNING: Using $OX_REPO_GUARD as guard repository source" # shift # shift # ;; *) # unknown option echo "Unknonwn option: $1" POSITIONAL+=("$1") # save it in an array for later shift ;; esac done set -- "${POSITIONAL[@]}" # restore positional parameters if [[ -z "${INSTALL_TYPE}" ]]; then echo "No build type was specified. (either singlenode or cluster)" #export INSTALL_TYPE=singlenode exit 99 fi STARTED_AT=$(date) if [[ "${INSTALL_TYPE}" == "singlenode" ]]; then # ensure that all components will be "force" installed if on singlenode docker build --no-cache --rm -f ${SCRIPT_DIR}/singlenode/Dockerfile -t singlenode:latest ${SCRIPT_DIR}/../ elif [[ "${INSTALL_TYPE}" == "cluster" ]]; then #exportProperties ${SCRIPT_DIR}/cluster/config # TODO: propper image tag versioning echo "Building OX frontend image ..." docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/frontend.Dockerfile -t open-xchange-frontend:latest ${SCRIPT_DIR}/../ echo "Building OX middleware image ..." docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/middleware.Dockerfile -t open-xchange-middleware:latest ${SCRIPT_DIR}/../ else # let the environment variables do the selection magic echo "Not yet implemented" exit 99 fi echo "" pushd ${SCRIPT_DIR}/.. popd FINISHED_AT=$(date) echo "=====================================================================================" echo "Started at: $STARTED_AT" echo "Finished at: $FINISHED_AT"