3f700ab500
Should trigger new build for `geopython/pygeoapi:latest` on DockerHub...
79 lines
2.0 KiB
Bash
Executable File
79 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# pygeoapi entry script
|
|
|
|
echo "START /entrypoint.sh"
|
|
|
|
set +e
|
|
|
|
export PYGEOAPI_HOME=/pygeoapi
|
|
export PYGEOAPI_CONFIG="${PYGEOAPI_HOME}/local.config.yml"
|
|
export PYGEOAPI_OPENAPI="${PYGEOAPI_HOME}/local.openapi.yml"
|
|
|
|
# gunicorn env settings with defaults
|
|
SCRIPT_NAME=${SCRIPT_NAME:=/}
|
|
CONTAINER_NAME=${CONTAINER_NAME:=pygeoapi}
|
|
CONTAINER_HOST=${CONTAINER_HOST:=0.0.0.0}
|
|
CONTAINER_PORT=${CONTAINER_PORT:=80}
|
|
WSGI_WORKERS=${WSGI_WORKERS:=4}
|
|
WSGI_WORKER_TIMEOUT=${WSGI_WORKER_TIMEOUT:=6000}
|
|
WSGI_WORKER_CLASS=${WSGI_WORKER_CLASS:=gevent}
|
|
|
|
# What to invoke: default is to run gunicorn server
|
|
entry_cmd=${1:-run}
|
|
|
|
# Shorthand
|
|
function error() {
|
|
echo "ERROR: $@"
|
|
exit -1
|
|
}
|
|
|
|
# Workdir
|
|
cd ${PYGEOAPI_HOME}
|
|
|
|
echo "Trying to generate openapi.yml"
|
|
pygeoapi generate-openapi-document -c ${PYGEOAPI_CONFIG} > ${PYGEOAPI_OPENAPI}
|
|
|
|
[[ $? -ne 0 ]] && error "openapi.yml could not be generated ERROR"
|
|
|
|
echo "openapi.yml generated continue to pygeoapi"
|
|
|
|
case ${entry_cmd} in
|
|
# Run Unit tests
|
|
test)
|
|
for test_py in $(ls tests/test_*.py)
|
|
do
|
|
# Skip tests requireing backend server or libs installed
|
|
case ${test_py} in
|
|
tests/test_elasticsearch__provider.py)
|
|
;&
|
|
tests/test_postgresql_provider.py)
|
|
echo "Skipping: ${test_py}"
|
|
;;
|
|
*)
|
|
python3 -m pytest ${test_py}
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
|
|
# Run pygeoapi server
|
|
run)
|
|
# SCRIPT_NAME should not have value '/'
|
|
[[ "${SCRIPT_NAME}" = '/' ]] && export SCRIPT_NAME="" && echo "make SCRIPT_NAME empty from /"
|
|
|
|
echo "Start gunicorn name=${CONTAINER_NAME} on ${CONTAINER_HOST}:${CONTAINER_PORT} with ${WSGI_WORKERS} workers and SCRIPT_NAME=${SCRIPT_NAME}"
|
|
gunicorn --workers ${WSGI_WORKERS} \
|
|
--worker-class=${WSGI_WORKER_CLASS} \
|
|
--timeout ${WSGI_WORKER_TIMEOUT} \
|
|
--name=${CONTAINER_NAME} \
|
|
--bind ${CONTAINER_HOST}:${CONTAINER_PORT} \
|
|
pygeoapi.flask_app:APP
|
|
;;
|
|
*)
|
|
error "unknown command arg: must be run (default) or test"
|
|
;;
|
|
esac
|
|
|
|
echo "END /entrypoint.sh"
|