2022-10-12 14:22:22 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
function error_handler() {
|
|
|
|
>&2 echo "Exited with BAD EXIT CODE '${2}' in ${0} script at line: ${1}."
|
|
|
|
exit "$2"
|
|
|
|
}
|
|
|
|
trap 'error_handler ${LINENO} $?' ERR
|
|
|
|
set -o errtrace -o errexit -o nounset -o pipefail
|
|
|
|
|
|
|
|
# run migrations
|
|
|
|
export FLASK_APP=/app/src/spiffworkflow_backend
|
|
|
|
|
2022-10-17 02:32:16 +00:00
|
|
|
if [[ "${WAIT_FOR_DB_TO_BE_READY:-}" == "true" ]]; then
|
|
|
|
echo 'Waiting for db to be ready...'
|
|
|
|
poetry run python ./bin/wait_for_db_to_be_ready.py
|
|
|
|
fi
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
if [[ "${DOWNGRADE_DB:-}" == "true" ]]; then
|
|
|
|
echo 'Downgrading database...'
|
|
|
|
poetry run flask db downgrade
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_UPGRADE_DB:-}" == "true" ]]; then
|
|
|
|
echo 'Upgrading database...'
|
|
|
|
poetry run flask db upgrade
|
|
|
|
fi
|
|
|
|
|
|
|
|
port="${SPIFFWORKFLOW_BACKEND_PORT:-}"
|
|
|
|
if [[ -z "$port" ]]; then
|
|
|
|
port=7000
|
|
|
|
fi
|
|
|
|
|
|
|
|
additional_args=""
|
|
|
|
|
|
|
|
if [[ "${APPLICATION_ROOT:-}" != "/" ]]; then
|
|
|
|
additional_args="${additional_args} -e SCRIPT_NAME=${APPLICATION_ROOT}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# HACK: if loading fixtures for acceptance tests when we do not need multiple workers
|
|
|
|
# it causes issues with attempting to add duplicate data to the db
|
|
|
|
workers=3
|
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_LOAD_FIXTURE_DATA:-}" == "true" ]]; then
|
|
|
|
workers=1
|
|
|
|
fi
|
|
|
|
|
2022-10-12 19:28:52 +00:00
|
|
|
if [[ "${SPIFFWORKFLOW_BACKEND_RUN_DATA_SETUP:-}" != "false" ]]; then
|
|
|
|
SPIFFWORKFLOW_BACKEND_FAIL_ON_INVALID_PROCESS_MODELS=false poetry run python bin/save_all_bpmn.py
|
|
|
|
fi
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
export IS_GUNICORN="true"
|
|
|
|
|
|
|
|
# THIS MUST BE THE LAST COMMAND!
|
2022-10-19 20:16:50 +00:00
|
|
|
exec poetry run gunicorn ${additional_args} --bind "0.0.0.0:$port" --workers="$workers" --limit-request-line 8192 --timeout 90 --capture-output --access-logfile '-' --log-level debug wsgi:app
|