#!/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)" source ${SCRIPT_DIR}/../lib/common.bash ## Help text show_usage() { echo -n " Build docker images with the help of the ox-installer scripts. NOTE: Review the configuration used in the respective folder: singlenode/config or cluster/config Easiest way to get a working image: $ ${0} Per component options (can be combined): Installation types (not combineable): --singlenode This will install and init an basic OX instance (db, mw, fe) --cluster This will create several images for deploying some docker-compose cluster Configuration options: Examples: " } ### 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 ;; *) # 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 # sourcing Versions to use from file for tagging exportProperties ${SCRIPT_DIR}/../setup/versions echo "Config to be used:" echo "============================================" grep -v '^#' ${SCRIPT_DIR}/${INSTALL_TYPE}/config echo "============================================" echo "NOTE: You may want to review the configuration: ${SCRIPT_DIR}/${INSTALL_TYPE}/config before building the images!" echo "CTRL+C to cancel ..." echo "" sleep 3 STARTED_AT=$(date) if [[ "${INSTALL_TYPE}" == "singlenode" ]]; then # ensure that all components will be "force" installed if on singlenode exportProperties ${SCRIPT_DIR}/singlenode/config docker build --no-cache --rm \ -f ${SCRIPT_DIR}/singlenode/Dockerfile \ -t singlenode:${AS_BACKEND_VERSION} ${SCRIPT_DIR}/../ docker tag singlenode:${AS_BACKEND_VERSION} singlenode:latest elif [[ "${INSTALL_TYPE}" == "cluster" ]]; then # TODO: propper image tag versioning exportProperties ${SCRIPT_DIR}/cluster/config echo "Building OX frontend image ..." docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/frontend.Dockerfile -t open-xchange-frontend${AS_BACKEND_VERSION} ${SCRIPT_DIR}/../ echo "Building OX middleware image ..." docker build --no-cache --rm -f ${SCRIPT_DIR}/cluster/middleware.Dockerfile -t open-xchange-middleware${AS_BACKEND_VERSION} ${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"