diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -237,6 +237,24 @@ - "./conf/scheduler.yml:/scheduler.yml:ro" - "./services/swh-scheduler-worker/entrypoint.sh:/entrypoint.sh:ro" + swh-scheduler-update-metrics: + image: swh/stack + build: ./ + env_file: + - ./env/common_python.env + - ./env/scheduler-db.env + - ./env/scheduler.env + environment: + SWH_CONFIG_FILENAME: /scheduler.yml + SWH_SCHEDULER_CONFIG_FILE: /scheduler.yml + entrypoint: /entrypoint.sh + command: update-metrics + depends_on: + - swh-scheduler-db + volumes: + - "./conf/scheduler.yml:/scheduler.yml:ro" + - "./services/swh-scheduler/entrypoint.sh:/entrypoint.sh:ro" + # Graph storage swh-storage-db: diff --git a/docker/services/swh-scheduler/entrypoint.sh b/docker/services/swh-scheduler/entrypoint.sh --- a/docker/services/swh-scheduler/entrypoint.sh +++ b/docker/services/swh-scheduler/entrypoint.sh @@ -9,31 +9,43 @@ setup_pip -if [ "$1" = 'shell' ] ; then - shift - if (( $# == 0)); then - exec bash -i - else - "$@" - fi -else - wait_pgsql ${POSTGRES_DB} - - echo swh-scheduler database setup - - echo Creating extensions... - swh db init-admin --db-name ${POSTGRES_DB} scheduler - - echo Initializing the database... - swh db init --db-name ${POSTGRES_DB} scheduler - - echo Starting the swh-scheduler API server - exec gunicorn --bind 0.0.0.0:5008 \ - --log-level DEBUG \ - --threads 2 \ - --workers 2 \ - --reload \ - --timeout 3600 \ - --config 'python:swh.core.api.gunicorn_config' \ - 'swh.scheduler.api.server:make_app_from_configfile()' -fi +case "$1" in + "shell") + shift + if (( $# == 0)); then + exec bash -i + else + "$@" + fi + ;; + "update-metrics") + wait-for-it swh-scheduler:5008 -s --timeout=0 + + echo "Start periodic scheduler metrics update routine (in background)" + exec sh -c 'trap exit TERM INT; while :; do + (date && swh scheduler origin update-metrics) + sleep 60 & + wait ${!} + done' + ;; + *) + wait_pgsql ${POSTGRES_DB} + + echo swh-scheduler database setup + + echo Creating extensions... + swh db init-admin --db-name ${POSTGRES_DB} scheduler + + echo Initializing the database... + swh db init --db-name ${POSTGRES_DB} scheduler + + echo Starting the swh-scheduler API server + exec gunicorn --bind 0.0.0.0:5008 \ + --log-level DEBUG \ + --threads 2 \ + --workers 2 \ + --reload \ + --timeout 3600 \ + --config 'python:swh.core.api.gunicorn_config' \ + 'swh.scheduler.api.server:make_app_from_configfile()' +esac