cd "$(dirname "$0")"
-docker_min_version='1.8.0'
-docker_rec_version='1.8.0'
+docker_min_version='17.03.1'
+docker_rec_version='17.06.2'
git_min_version='1.8.0'
git_rec_version='1.8.0'
config_file=containers/"$config".yml
cidbootstrap=cids/"$config"_bootstrap.cid
local_discourse=local_discourse
-image=discourse/discourse:1.3.10
+image=discourse/base:2.0.20180404
docker_path=`which docker.io || which docker`
git_path=`which git`
awk -F: '{ print $3 }';`
fi
+# From https://stackoverflow.com/a/44660519/702738
compare_version() {
- declare -a ver_a
- declare -a ver_b
- IFS=. read -a ver_a <<< "$1"
- IFS=. read -a ver_b <<< "$2"
-
- while [[ -n $ver_a ]]; do
- if (( ver_a > ver_b )); then
- return 0
- elif (( ver_b > ver_a )); then
+ if [[ $1 == $2 ]]; then
+ return 1
+ fi
+ local IFS=.
+ local i a=(${1%%[^0-9.]*}) b=(${2%%[^0-9.]*})
+ local arem=${1#${1%%[^0-9.]*}} brem=${2#${2%%[^0-9.]*}}
+ for ((i=0; i<${#a[@]} || i<${#b[@]}; i++)); do
+ if ((10#${a[i]:-0} < 10#${b[i]:-0})); then
return 1
- else
- unset ver_a[0]
- ver_a=("${ver_a[@]}")
- unset ver_b[0]
- ver_b=("${ver_b[@]}")
+ elif ((10#${a[i]:-0} > 10#${b[i]:-0})); then
+ return 0
fi
done
- return 1 # They are equal
+ if [ "$arem" '<' "$brem" ]; then
+ return 1
+ elif [ "$arem" '>' "$brem" ]; then
+ return 0
+ fi
+ return 1
}
fi
# 2. running an approved storage driver?
- if ! $docker_path info 2> /dev/null | egrep -q '^Storage Driver: (aufs|btrfs|zfs|overlay)$'; then
+ if ! $docker_path info 2> /dev/null | egrep -q '^Storage Driver: (aufs|btrfs|zfs|overlay|overlay2)$'; then
echo "Your Docker installation is not using a supported storage driver. If we were to proceed you may have a broken install."
- echo "aufs is the recommended storage driver, although zfs/btrfs and overlay may work as well."
+ echo "aufs is the recommended storage driver, although zfs/btrfs/overlay and overlay2 may work as well."
echo "Other storage drivers are known to be problematic."
echo "You can tell what filesystem you are using by running \"docker info\" and looking at the 'Storage Driver' line."
echo
exit 1
fi
+ # 7. enough space for the bootstrap on docker folder
+ folder=`$docker_path info --format '{{.DockerRootDir}}'`
+ safe_folder=${folder:-/var/lib/docker}
+ test=$(($(stat -f --format="%a*%S" $safe_folder)/1024**3 < 5))
+ if [[ $test -ne 0 ]] ; then
+ echo "You have less than 5GB of free space on the disk where $safe_folder is located. You will need more space to continue"
+ df -h $safe_folder
+ echo
+ read -p "Would you like to attempt to recover space by cleaning docker images and containers in the system?(y/N)" -n 1 -r
+ echo
+ if [[ $REPLY =~ ^[Yy]$ ]]
+ then
+ docker system prune
+ echo "If the cleanup was successful, you may try again now"
+ fi
+ exit 1
+ fi
}
-if [ -z "$SKIP_PREREQS" ] ; then
+if [ -z "$SKIP_PREREQS" ] && [ "$command" != "cleanup" ]; then
check_prereqs
fi
if [ "$i" == "*ERROR." ]; then
ok=0
elif [ -n "$i" ]; then
- labels[${#labels[@]}]=$i
+ labels[${#labels[@]}]=$(echo $i | sed s/{{config}}/${config}/g)
fi
done <<< "$raw"
elif [ $LOCAL = $BASE ]; then
echo "Updating Launcher"
git pull || (echo 'failed to update' && exit 1)
-
+
for (( i=${#BASH_ARGV[@]}-1,j=0; i>=0,j<${#BASH_ARGV[@]}; i--,j++ ))
do
args[$j]=${BASH_ARGV[$i]}