Spaces:
Runtime error
Runtime error
set -Eeuo pipefail | |
# check to see if this file is being run or sourced from another script | |
_is_sourced() { | |
# https://unix.stackexchange.com/a/215279 | |
[ "${#FUNCNAME[@]}" -ge 2 ] && | |
[ "${FUNCNAME[0]}" = '_is_sourced' ] && | |
[ "${FUNCNAME[1]}" = 'source' ] | |
} | |
_main() { | |
# For backwards compatibility with the yatai<1.0.0, adapting the old "yatai" command to the new "start" command. | |
if [ "${#}" -gt 0 ] && [ "${1}" = 'python' ] && [ "${2}" = '-m' ] && { [ "${3}" = 'bentoml._internal.server.cli.runner' ] || [ "${3}" = "bentoml._internal.server.cli.api_server" ]; }; then # SC2235, use { } to avoid subshell overhead | |
if [ "${3}" = 'bentoml._internal.server.cli.runner' ]; then | |
set -- bentoml start-runner-server "${@:4}" | |
elif [ "${3}" = 'bentoml._internal.server.cli.api_server' ]; then | |
set -- bentoml start-http-server "${@:4}" | |
fi | |
# If no arg or first arg looks like a flag. | |
elif [[ "$#" -eq 0 ]] || [[ "${1:0:1}" =~ '-' ]]; then | |
# This is provided for backwards compatibility with places where user may have | |
# discover this easter egg and use it in their scripts to run the container. | |
if [[ -v BENTOML_SERVE_COMPONENT ]]; then | |
echo "\$BENTOML_SERVE_COMPONENT is set! Calling 'bentoml start-*' instead" | |
if [ "${BENTOML_SERVE_COMPONENT}" = 'http_server' ]; then | |
set -- bentoml start-http-server "$@" "$BENTO_PATH" | |
elif [ "${BENTOML_SERVE_COMPONENT}" = 'grpc_server' ]; then | |
set -- bentoml start-grpc-server "$@" "$BENTO_PATH" | |
elif [ "${BENTOML_SERVE_COMPONENT}" = 'runner' ]; then | |
set -- bentoml start-runner-server "$@" "$BENTO_PATH" | |
fi | |
else | |
set -- bentoml serve "$@" "$BENTO_PATH" | |
fi | |
fi | |
# Overide the BENTOML_PORT if PORT env var is present. Used for Heroku and Yatai. | |
if [[ -v PORT ]]; then | |
echo "\$PORT is set! Overiding \$BENTOML_PORT with \$PORT ($PORT)" | |
export BENTOML_PORT=$PORT | |
fi | |
# Handle serve and start commands that is passed to the container. | |
# Assuming that serve and start commands are the first arguments | |
# Note that this is the recommended way going forward to run all bentoml containers. | |
if [ "${#}" -gt 0 ] && { [ "${1}" = 'serve' ] || [ "${1}" = 'serve-http' ] || [ "${1}" = 'serve-grpc' ] || [ "${1}" = 'start-http-server' ] || [ "${1}" = 'start-grpc-server' ] || [ "${1}" = 'start-runner-server' ]; }; then | |
exec bentoml "$@" "$BENTO_PATH" | |
else | |
# otherwise default to run whatever the command is | |
# This should allow running bash, sh, python, etc | |
exec "$@" | |
fi | |
} | |
if ! _is_sourced; then | |
_main "$@" | |
fi | |