diff --git a/VERSION b/VERSION index 53adb84..a7ee35a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.2 +1.8.3 diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 97df086..7d4ceaa 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -1,6 +1,4 @@ #!/bin/bash - -set -eo pipefail __dirname=$(cd "$(dirname "$0")"; pwd -P) cd "${__dirname}/.." @@ -13,13 +11,28 @@ echo "v$(cat VERSION)" echo "" echo Booting... +touch /tmp/booting.flag -if [ -f ./venv/bin/libretranslate ]; then +if [[ -f ./venv/bin/libretranslate ]]; then LT_POWERCYCLE=1 ./venv/bin/libretranslate "$@" else echo "WARNING: Cannot powercycle LibreTranslate (if you are in development mode, that's fine..)" fi -eval $(./venv/bin/python ./scripts/print_args_env.py "$@") -PROMETHEUS_MULTIPROC_DIR="${__dirname}/../db/prometheus" ./venv/bin/gunicorn -c scripts/gunicorn_conf.py --workers $LT_THREADS --max-requests 250 --timeout 2400 --bind [::]:$LT_PORT 'wsgi:app' +rm -f /tmp/booting.flag + +eval $(./venv/bin/python ./scripts/print_args_env.py "$@") + +if [[ $LT_HOST == "127.0.0.1" ]]; then + # Default + BIND_ADDR="0.0.0.0" + IPV6_STATUS=$(cat /proc/sys/net/ipv6/conf/all/disable_ipv6) + if [[ $IPV6_STATUS -eq 0 ]]; then + BIND_ADDR="[::]" + fi +else + BIND_ADDR="$LT_HOST" +fi + +PROMETHEUS_MULTIPROC_DIR="${__dirname}/../db/prometheus" ./venv/bin/gunicorn -c scripts/gunicorn_conf.py --workers $LT_THREADS --max-requests 250 --timeout 2400 --bind $BIND_ADDR:$LT_PORT 'wsgi:app' diff --git a/scripts/healthcheck.py b/scripts/healthcheck.py index 31bafa8..4c4b35c 100644 --- a/scripts/healthcheck.py +++ b/scripts/healthcheck.py @@ -1,5 +1,9 @@ import requests import os +import sys + +if os.path.isfile('/tmp/booting.flag'): + sys.exit(0) port = os.environ.get('LT_PORT', '5000') response = requests.get( diff --git a/scripts/print_args_env.py b/scripts/print_args_env.py index 080fc1a..cfcb789 100644 --- a/scripts/print_args_env.py +++ b/scripts/print_args_env.py @@ -11,7 +11,7 @@ for arg in dir(args): if not arg.startswith('_'): value = getattr(args, arg) def_value = parser.get_default(arg) - if not callable(value) and (value != def_value or arg == 'port' or arg == 'threads'): + if not callable(value) and (value != def_value or arg == 'port' or arg == 'threads' or arg == 'host'): if isinstance(value, str): value = value.replace('"', '') elif isinstance(value, list):