#!/bin/bash
|
|
set -e ${DEBUG:+-x}
|
|
# Redirect all scripts output + leaving stdout to container payload.
|
exec 3>&1
|
|
ENTRYPOINT_PATH=/label-studio/deploy/docker-entrypoint.d
|
|
exec_entrypoint() {
|
if /usr/bin/find -L "$1" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then
|
echo >&3 "$0: Looking for init scripts in $1"
|
find "$1" -follow -type f -print | sort -V | while read -r f; do
|
case "$f" in
|
*.sh)
|
if [ -x "$f" ]; then
|
echo >&3 "$0: Launching $f"
|
"$f"
|
else
|
# warn on shell scripts without exec bit
|
echo >&3 "$0: Ignoring $f, not executable"
|
fi
|
;;
|
*) echo >&3 "$0: Ignoring $f" ;;
|
esac
|
done
|
CONFIG_ENV=$OPT_DIR/config_env
|
if [ -f "$CONFIG_ENV" ]; then
|
echo >&3 "$0: Sourcing $CONFIG_ENV"
|
. $CONFIG_ENV
|
fi
|
echo >&3 "$0: Configuration complete; ready for start up"
|
else
|
echo >&3 "$0: No init scripts found in $1, skipping configuration"
|
fi
|
}
|
|
source_inject_envvars() {
|
if [ -n "${ENV_INJECT_SOURCES:-}" ]; then
|
IFS=","
|
for env_file in $ENV_INJECT_SOURCES; do
|
if [ -f "$env_file" ]; then
|
. $env_file
|
fi
|
done
|
fi
|
}
|
|
exec_or_wrap_n_exec() {
|
if [ -n "${CMD_WRAPPER:-}" ]; then
|
IFS=" "
|
wrapper_cmd_array=($CMD_WRAPPER)
|
wrapper_cmd=${wrapper_cmd_array[0]}
|
wrapper_cmd_args=${wrapper_cmd_array[@]:1}
|
exec "$wrapper_cmd" $wrapper_cmd_args $@
|
else
|
exec "$@"
|
fi
|
}
|
|
source_inject_envvars
|
|
if [ -f "$OPT_DIR"/config_env ]; then
|
echo >&3 "$0: Remove config_env"
|
rm -f "$OPT_DIR"/config_env
|
fi
|
|
if [ "$1" = "nginx" ]; then
|
# in this mode we're running in a separate container
|
export APP_HOST=${APP_HOST:=app}
|
exec_entrypoint "$ENTRYPOINT_PATH/nginx/"
|
exec nginx -c $OPT_DIR/nginx/nginx.conf -e /dev/stderr
|
elif [ "$1" = "label-studio-uwsgi" ]; then
|
exec_entrypoint "$ENTRYPOINT_PATH/app/"
|
exec_or_wrap_n_exec uwsgi --ini /label-studio/deploy/uwsgi.ini
|
elif [ "$1" = "label-studio-migrate" ]; then
|
exec_entrypoint "$ENTRYPOINT_PATH/app-init/"
|
exec python3 /label-studio/label_studio/manage.py locked_migrate >&3
|
else
|
exec_or_wrap_n_exec "$@"
|
fi
|