2020-06-02 14:20:23 +01:00
|
|
|
#! /usr/bin/env bash
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
2020-07-16 09:34:53 +01:00
|
|
|
#### Detect Toolkit Project Root ####
|
2020-07-16 13:55:18 +01:00
|
|
|
# if realpath is not available, create a semi-equivalent function
|
|
|
|
command -v realpath >/dev/null 2>&1 || realpath() {
|
|
|
|
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
|
|
|
|
}
|
2020-07-16 09:34:53 +01:00
|
|
|
SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")"
|
|
|
|
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
|
|
|
|
TOOLKIT_ROOT="$(realpath "$SCRIPT_DIR/..")"
|
|
|
|
if [[ ! -d "$TOOLKIT_ROOT/bin" ]] || [[ ! -d "$TOOLKIT_ROOT/config" ]]; then
|
|
|
|
echo "ERROR: could not find root of overleaf-toolkit project (inferred project root as '$TOOLKIT_ROOT')"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
RC_FILE="$TOOLKIT_ROOT/config/overleaf.rc"
|
2020-06-11 11:19:35 +01:00
|
|
|
|
2020-06-02 14:20:23 +01:00
|
|
|
function __main__() {
|
2020-07-16 09:34:53 +01:00
|
|
|
SHARELATEX_IMAGE_VERSION="$(head -n 1 "$TOOLKIT_ROOT/config/version")"
|
2020-06-30 15:30:47 +01:00
|
|
|
MONGO_IMAGE="mongo:3.6"
|
2020-07-09 11:10:42 +01:00
|
|
|
REDIS_IMAGE="redis:5.0"
|
2020-06-11 11:19:35 +01:00
|
|
|
|
2020-07-09 15:56:38 +01:00
|
|
|
MONGO_URL="mongodb://mongo/sharelatex"
|
|
|
|
REDIS_HOST="redis"
|
|
|
|
REDIS_PORT="6379"
|
|
|
|
|
2020-07-09 13:36:40 +01:00
|
|
|
if [[ ! "$SHARELATEX_IMAGE_VERSION" \
|
|
|
|
=~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
|
|
echo "ERROR: invalid version '${SHARELATEX_IMAGE_VERSION}'"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2020-07-09 11:09:09 +01:00
|
|
|
# Load vars from the rc file
|
2020-06-11 11:19:35 +01:00
|
|
|
# shellcheck disable=SC1090
|
2020-07-09 11:09:09 +01:00
|
|
|
source "$RC_FILE"
|
2020-06-11 11:19:35 +01:00
|
|
|
|
2020-06-12 09:19:33 +01:00
|
|
|
# Select which docker-compose files to load
|
2020-07-16 09:34:53 +01:00
|
|
|
compose_file_flags=("-f $TOOLKIT_ROOT/lib/docker-compose.base.yml")
|
2020-07-09 11:09:09 +01:00
|
|
|
if [[ "$REDIS_ENABLED" == "true" ]]; then
|
2020-07-16 09:34:53 +01:00
|
|
|
compose_file_flags+=("-f $TOOLKIT_ROOT/lib/docker-compose.redis.yml")
|
2020-06-11 11:19:35 +01:00
|
|
|
fi
|
2020-07-09 11:09:09 +01:00
|
|
|
if [[ "$MONGO_ENABLED" == "true" ]]; then
|
2020-07-16 09:34:53 +01:00
|
|
|
compose_file_flags+=("-f $TOOLKIT_ROOT/lib/docker-compose.mongo.yml")
|
2020-06-11 11:19:35 +01:00
|
|
|
fi
|
2020-07-09 11:09:09 +01:00
|
|
|
if [[ "$SIBLING_CONTAINERS_ENABLED" == "true" ]]; then
|
2020-07-16 09:34:53 +01:00
|
|
|
compose_file_flags+=("-f $TOOLKIT_ROOT/lib/docker-compose.sibling-containers.yml")
|
2020-06-16 11:17:01 +01:00
|
|
|
fi
|
2020-06-16 10:00:00 +01:00
|
|
|
|
2020-06-12 15:59:11 +01:00
|
|
|
# Include docker-compose.override.yml if it is present
|
2020-07-16 09:34:53 +01:00
|
|
|
if [[ -f "$TOOLKIT_ROOT/config/docker-compose.override.yml" ]]; then
|
|
|
|
compose_file_flags+=("-f $TOOLKIT_ROOT/config/docker-compose.override.yml")
|
2020-06-12 15:59:11 +01:00
|
|
|
fi
|
2020-06-16 10:00:00 +01:00
|
|
|
|
2020-06-12 09:19:33 +01:00
|
|
|
# Build up the flags to pass to docker-compose
|
2020-07-09 11:09:09 +01:00
|
|
|
project_name="${PROJECT_NAME:-overleaf}"
|
2020-06-11 11:19:35 +01:00
|
|
|
|
2020-07-01 14:19:27 +01:00
|
|
|
image_name="sharelatex/sharelatex"
|
2020-07-09 11:09:09 +01:00
|
|
|
if [[ "${SERVER_PRO:-null}" == "true" ]]; then
|
2020-07-01 14:19:27 +01:00
|
|
|
image_name="quay.io/sharelatex/sharelatex-pro"
|
|
|
|
fi
|
|
|
|
|
|
|
|
full_image_spec="$image_name:$SHARELATEX_IMAGE_VERSION"
|
|
|
|
|
|
|
|
# Canonicalize data paths
|
2020-07-16 11:06:53 +01:00
|
|
|
SHARELATEX_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$SHARELATEX_DATA_PATH")
|
|
|
|
MONGO_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$MONGO_DATA_PATH")
|
|
|
|
REDIS_DATA_PATH=$(cd "$TOOLKIT_ROOT"; realpath "$REDIS_DATA_PATH")
|
2020-07-01 14:19:27 +01:00
|
|
|
|
|
|
|
# Print debug info
|
2020-06-11 11:19:35 +01:00
|
|
|
if [[ "${RC_DEBUG:-null}" != "null" ]]; then
|
2020-07-01 14:19:27 +01:00
|
|
|
echo ">>>>>>VARS>>>>>>"
|
2020-07-09 11:09:09 +01:00
|
|
|
echo "$(set -o posix; set)" # print all vars
|
2020-07-01 14:19:27 +01:00
|
|
|
echo "IMAGE_VERSION=$SHARELATEX_IMAGE_VERSION"
|
|
|
|
echo "<<<<<<<<<<<<<<<<"
|
2020-06-11 15:34:18 +01:00
|
|
|
echo ">>>>COMPOSE-ARGS>>>>"
|
2020-06-16 10:04:11 +01:00
|
|
|
echo "-p $project_name"
|
|
|
|
echo "${compose_file_flags[@]}"
|
|
|
|
echo "$@"
|
2020-06-11 15:34:18 +01:00
|
|
|
echo "<<<<<<<<<<<<<<<<<<<<"
|
2020-06-11 11:19:35 +01:00
|
|
|
fi
|
|
|
|
|
2020-06-12 09:19:33 +01:00
|
|
|
# Export vars for use in docker-compose files
|
2020-07-09 11:09:09 +01:00
|
|
|
export IMAGE="$full_image_spec"
|
|
|
|
export SHARELATEX_DATA_PATH
|
|
|
|
export DOCKER_SOCKET_PATH
|
|
|
|
export MONGO_IMAGE
|
|
|
|
export MONGO_DATA_PATH
|
2020-07-09 15:56:38 +01:00
|
|
|
export MONGO_URL
|
2020-07-09 11:09:09 +01:00
|
|
|
export REDIS_IMAGE
|
|
|
|
export REDIS_DATA_PATH
|
2020-07-09 15:56:38 +01:00
|
|
|
export REDIS_HOST
|
|
|
|
export REDIS_PORT
|
2020-06-11 11:20:55 +01:00
|
|
|
|
2020-06-16 10:00:00 +01:00
|
|
|
# shellcheck disable=SC2068
|
|
|
|
exec docker-compose -p "$project_name" ${compose_file_flags[@]} "$@"
|
2020-06-02 14:20:23 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
__main__ "$@"
|