diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9962722c..cb220fe5 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -7,6 +7,9 @@ on: - 'main' tags: - '*' + paths: + - 'src/**' + - 'docker/**' release: types: [ published ] diff --git a/README.md b/README.md index 15e3337f..94f6e7f2 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@

- wakatime + wakatime diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index f28c0cbf..7a024505 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,6 +1,7 @@ #!/bin/bash config_file="/data/wg-dashboard.ini" +runtime_pid="" trap 'stop_service' SIGTERM @@ -52,7 +53,31 @@ set_ini() { stop_service() { echo "[WGDashboard] Stopping WGDashboard..." - /bin/bash ./wgd.sh stop + + local max_rounds="10" + local round="0" + local runtime_pid="" + + while true; do + round=$((round + 1)) + + if [[ -f ${WGDASH}/src/gunicorn.pid ]]; then + runtime_pid=$(cat ${WGDASH}/src/gunicorn.pid) + + echo "Running as PID: ${runtime_pid}" + return 0 + fi + + if [[ $round -eq $max_rounds ]]; then + echo "Reached breaking point!" + return 1 + + fi + + sleep 0.5s + done + + kill $runtime_pid exit 0 } @@ -192,9 +217,10 @@ start_and_monitor() { [[ ! -d ${WGDASH}/src/log ]] && mkdir ${WGDASH}/src/log [[ ! -d ${WGDASH}/src/download ]] && mkdir ${WGDASH}/src/download + ${WGDASH}/src/venv/bin/gunicorn --config ${WGDASH}/src/gunicorn.conf.py - resolvconf -u + /usr/sbin/resolvconf -u if [ $? -ne 0 ]; then echo "Loading WGDashboard failed... Look above for details." @@ -203,13 +229,14 @@ start_and_monitor() { # Wait a second before continuing, to give the python program some time to get ready. echo -e "\nEnsuring container continuation." - max_rounds="10" - round="0" + local max_rounds="10" + local round="0" # Hang in there for 10s for Gunicorn to get ready while true; do round=$((round + 1)) - latest_error=$(ls -t ${WGDASH}/src/log/error_*.log 2> /dev/null | head -n 1) + + local latest_error=$(ls -t ${WGDASH}/src/log/error_*.log 2> /dev/null | head -n 1) if [[ $round -eq $max_rounds ]]; then echo "Reached breaking point!" @@ -235,13 +262,10 @@ start_and_monitor() { else tail -f "$latest_error" & - wait $! + tail_pid=$! + wait $tail_pid fi - - echo "The blocking command has been broken! Script will exit in 3 minutes... Investigate!" - sleep 180s - exit 1 } # Main execution flow