Make run.sh more robust

This commit is contained in:
9seconds
2019-11-25 10:31:19 +03:00
parent 31866d5f64
commit a65cb05d20
+21 -11
View File
@@ -11,11 +11,23 @@
# export MTG_IMAGENAME="nineseconds/mtg:latest" # export MTG_IMAGENAME="nineseconds/mtg:latest"
# curl -sfL --compressed https://raw.githubusercontent.com/9seconds/mtg/master/run.sh | bash # curl -sfL --compressed https://raw.githubusercontent.com/9seconds/mtg/master/run.sh | bash
set -eu -o pipefail set -eu
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export MTG_CONFIG="${MTG_CONFIG:-$XDG_CONFIG_HOME/mtg}" export MTG_CONFIG="${MTG_CONFIG:-$XDG_CONFIG_HOME/mtg}"
if ! [ -x "$(command -v docker)" ]; then
echo 'Error: docker is not installed.' >&2
exit 1
fi
id -Gn "$USER" | grep -qw 'docker' > /dev/null
if [ $? -eq 0 ] || [ "$(id -u)" -eq '0' ]; then
DOCKER_CMD="$(command -v docker)"
else
DOCKER_CMD="sudo $(command -v docker)"
fi
mkdir -p "$MTG_CONFIG" || true mkdir -p "$MTG_CONFIG" || true
MTG_SECRET="$MTG_CONFIG/secret" MTG_SECRET="$MTG_CONFIG/secret"
@@ -26,33 +38,31 @@ if [ ! -f "$MTG_ENV" ]; then
MTG_PORT="${MTG_PORT:-3128}" MTG_PORT="${MTG_PORT:-3128}"
MTG_CONTAINER="${MTG_CONTAINER:-mtg}" MTG_CONTAINER="${MTG_CONTAINER:-mtg}"
echo "MTG_IMAGENAME=${MTG_IMAGENAME}" > "$MTG_ENV" echo "MTG_IMAGENAME=$MTG_IMAGENAME" > "$MTG_ENV"
echo "MTG_PORT=${MTG_PORT}" >> "$MTG_ENV" echo "MTG_PORT=$MTG_PORT" >> "$MTG_ENV"
echo "MTG_CONTAINER=${MTG_CONTAINER}" >> "$MTG_ENV" echo "MTG_CONTAINER=$MTG_CONTAINER" >> "$MTG_ENV"
fi fi
set -a set -a
source "$MTG_ENV" source "$MTG_ENV"
set +a set +a
docker pull "$MTG_IMAGENAME" $DOCKER_CMD pull "$MTG_IMAGENAME" > /dev/null
if [ ! -f "$MTG_SECRET" ]; then if [ ! -f "$MTG_SECRET" ]; then
docker run \ $DOCKER_CMD run \
--rm \ --rm \
"$MTG_IMAGENAME" \ "$MTG_IMAGENAME" \
generate-secret tls -c "$(openssl rand -hex 16).com" \ generate-secret tls -c "$(openssl rand -hex 16).com" \
> "$MTG_SECRET" > "$MTG_SECRET"
fi fi
echo
echo "Proxy secret is $(cat "$MTG_SECRET"). Port is $MTG_PORT." echo "Proxy secret is $(cat "$MTG_SECRET"). Port is $MTG_PORT."
echo
docker ps --filter "Name=$MTG_CONTAINER" -aq | xargs -r docker rm -fv $DOCKER_CMD ps --filter "Name=$MTG_CONTAINER" -aq | xargs -r $DOCKER_CMD rm -fv > /dev/null
docker run \ $DOCKER_CMD run \
-d \ -d \
--restart=unless-stopped \ --restart=unless-stopped \
--name "$MTG_CONTAINER" \ --name "$MTG_CONTAINER" \
--ulimit nofile=51200:51200 \ --ulimit nofile=51200:51200 \
-p "$MTG_PORT:3128" \ -p "$MTG_PORT:3128" \
"$MTG_IMAGENAME" run "$(cat "$MTG_SECRET")" "$MTG_IMAGENAME" run "$(cat "$MTG_SECRET")" > /dev/null