Changeset View
Changeset View
Standalone View
Standalone View
docker/services/swh-web/entrypoint.sh
Show All 16 Lines | |||||
source /srv/softwareheritage/utils/pyutils.sh | source /srv/softwareheritage/utils/pyutils.sh | ||||
setup_pip | setup_pip | ||||
case "$1" in | case "$1" in | ||||
"shell") | "shell") | ||||
exec bash -i | exec bash -i | ||||
;; | ;; | ||||
"cron") | |||||
echo "Start periodic save code now refresh statuses routine (in background)" | |||||
exec sh -c 'trap exit TERM INT; while :; do | |||||
(date && django-admin refresh_savecodenow_statuses \ | |||||
--settings=${DJANGO_SETTINGS_MODULE} 2>&1) | |||||
sleep 15 & | |||||
wait ${!} | |||||
ardumont: Let's trap sigterm. | |||||
done' | |||||
;; | |||||
*) | *) | ||||
wait_pgsql | wait_pgsql | ||||
echo "Migrating db using ${DJANGO_SETTINGS_MODULE}" | echo "Migrating db using ${DJANGO_SETTINGS_MODULE}" | ||||
django-admin migrate --settings=${DJANGO_SETTINGS_MODULE} | django-admin migrate --settings=${DJANGO_SETTINGS_MODULE} | ||||
echo "Creating Django test users" | echo "Creating Django test users" | ||||
SWH_WEB_SRC_DIR=$(python3 -c "import os; from swh import web; print(os.path.dirname(web.__file__))") | SWH_WEB_SRC_DIR=$(python3 -c "import os; from swh import web; print(os.path.dirname(web.__file__))") | ||||
for create_user_script in $SWH_WEB_SRC_DIR/tests/create_test_* | for create_user_script in $SWH_WEB_SRC_DIR/tests/create_test_* | ||||
do | do | ||||
cat $create_user_script | python3 -m swh.web.manage shell | cat $create_user_script | python3 -m swh.web.manage shell | ||||
done | done | ||||
echo "Start periodic save code now refresh statuses routine (in background)" | |||||
( | |||||
while true | |||||
do | |||||
(date && django-admin refresh_savecodenow_statuses \ | |||||
--settings=${DJANGO_SETTINGS_MODULE} 2>&1) >> /tmp/refresh-statuses.log | |||||
sleep 15 | |||||
done | |||||
) & | |||||
disown | |||||
echo "starting the swh-web server" | echo "starting the swh-web server" | ||||
if [[ -d /src/swh-web ]] ; then | if [[ -d /src/swh-web ]] ; then | ||||
# run django development server when overriding swh-web sources | # run django development server when overriding swh-web sources | ||||
exec django-admin runserver --nostatic --settings=${DJANGO_SETTINGS_MODULE} 0.0.0.0:5004 | exec django-admin runserver --nostatic --settings=${DJANGO_SETTINGS_MODULE} 0.0.0.0:5004 | ||||
else | else | ||||
# run gunicorn workers as in production otherwise | # run gunicorn workers as in production otherwise | ||||
exec gunicorn --bind 0.0.0.0:5004 \ | exec gunicorn --bind 0.0.0.0:5004 \ | ||||
--threads 2 \ | --threads 2 \ | ||||
--workers 2 \ | --workers 2 \ | ||||
--timeout 3600 \ | --timeout 3600 \ | ||||
--access-logfile '-' \ | --access-logfile '-' \ | ||||
--config 'python:swh.web.gunicorn_config' \ | --config 'python:swh.web.gunicorn_config' \ | ||||
'django.core.wsgi:get_wsgi_application()' | 'django.core.wsgi:get_wsgi_application()' | ||||
fi | fi | ||||
esac | esac |
Let's trap sigterm.