Files
pygeoapi/docker/entrypoint.sh
T
Just van den Broecke 3f700ab500 #114 Trivial update to trigger Docker autobuild
Should trigger new build for `geopython/pygeoapi:latest` on DockerHub...
2019-05-22 19:35:30 +02:00

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"