#!/usr/bin/env bash set -e # Setup DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" OUTPUT_DIR="../." if [ $# -gt 1 ] then OUTPUT_DIR=$2 fi DOCKER_DIR=$DIR/../docker if [ $# -gt 2 ] then DOCKER_DIR=$3 fi OS="linwin" if [ "$(uname)" == "Darwin" ] then OS="mac" fi TAG="1.12.0" # Functions function dockerComposeUp() { docker-compose -f $DOCKER_DIR/docker-compose.yml -f $DOCKER_DIR/docker-compose.$OS.yml up -d } function dockerComposeDown() { docker-compose -f $DOCKER_DIR/docker-compose.yml -f $DOCKER_DIR/docker-compose.$OS.yml down } function dockerComposePull() { docker-compose -f $DOCKER_DIR/docker-compose.yml -f $DOCKER_DIR/docker-compose.$OS.yml pull } function dockerPrune() { docker image prune -f } function updateLetsEncrypt() { if [ -d "${outputDir}/letsencrypt/live" ] then docker pull certbot/certbot docker run -it --rm --name certbot -p 443:443 -p 80:80 -v $OUTPUT_DIR/letsencrypt:/etc/letsencrypt/ certbot/certbot \ renew --logs-dir /etc/letsencrypt/logs fi } function updateDatabase() { docker pull bitwarden/setup:$TAG docker run -it --rm --name setup --network container:mssql -v $OUTPUT_DIR:/bitwarden bitwarden/setup:$TAG \ dotnet Setup.dll -update 1 -db 1 echo "Database update complete" } function printEnvironment() { docker pull bitwarden/setup:$TAG docker run -it --rm --name setup -v $OUTPUT_DIR:/bitwarden bitwarden/setup:$TAG \ dotnet Setup.dll -printenv 1 -env $OS } # Commands if [ "$1" == "start" -o "$1" == "restart" ] then dockerComposeDown dockerComposePull updateLetsEncrypt dockerComposeUp dockerPrune printEnvironment elif [ "$1" == "pull" ] then dockerComposePull elif [ "$1" == "stop" ] then dockerComposeDown elif [ "$1" == "updatedb" ] then updateDatabase fi