From 7cea586f419e8fcdcc6de94541308639298a1730 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Mon, 23 Jun 2025 19:01:31 +0000 Subject: [PATCH] update start sh to work with environemtns and update dockerfile to use it to start all needed services --- crawler/Dockerfile | 3 ++- crawler/start.sh | 61 ++++++++++++++++++++++------------------------ 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/crawler/Dockerfile b/crawler/Dockerfile index 7194c35..31d2206 100644 --- a/crawler/Dockerfile +++ b/crawler/Dockerfile @@ -41,5 +41,6 @@ EXPOSE 8000 # Set the entry point (adjust to your CLI's entry point) # ENTRYPOINT ["python", "/app/main.py"] # ENTRYPOINT ["/app/runall.sh"] -CMD ["/bin/bash" ,"-c" ,"alembic upgrade head && uvicorn api.app:app --host 0.0.0.0 --port 8000"] +# CMD ["/bin/bash" ,"-c" ,"alembic upgrade head && uvicorn api.app:app --host 0.0.0.0 --port 8000"] # ENTRYPOINT ["uvicorn", "api.app:app", "--host", "0.0.0.0", "--port", "8000"] +CMD ["./start.sh"] diff --git a/crawler/start.sh b/crawler/start.sh index df382f5..c4548c5 100755 --- a/crawler/start.sh +++ b/crawler/start.sh @@ -4,46 +4,43 @@ set -eux -if ! command -v celery &> /dev/null; then - echo "Error: celery is not installed. Please install celery and try again" - exit 1 -fi +ENV_MODE=${ENV:-"dev"} # Defaults to "dev" if ENV_MODE is unset -set +e -pkill -f celery -pkill watchmedo -set -e - -# use redis container instead to avoid overwriting prod -# if command -v kubectl &> /dev/null; then -# set +e -# pkill -f "kubectl port-forward" -# set -e - -# # kubectl port-forward $(kubectl get pods -n redis -o json | jq '.items[0].metadata.name' | sed 's/"//g') --address 0.0.0.0 6379:6379 -n redis & - -# fi - -# Ensure connection to broken is successful +echo "Checking connection to redis is successful..." python celery_app.py +case "$ENV_MODE" in + dev) + echo "🛠️ Running in DEVELOPMENT mode" + set +e + pkill -f celery + pkill watchmedo + set -e -watchmedo auto-restart --directory=./ --pattern='*.py' --recursive -- celery -A celery_app worker & # DEV to autoreload on changes -CELERY_PID=$! + watchmedo auto-restart --directory=./ --pattern='*.py' --recursive -- celery -A celery_app worker & # DEV to autoreload on changes + CELERY_PID=$! + ;; + prod) + echo "🚀 Running in PRODUCTION mode" + celery -A celery_app worker & + CELERY_PID=$! + ;; + *) + echo "❌ Unknown ENV_MODE: $ENV_MODE. Defaulting to DEV." + exit 1 + ;; +esac -# cleanup() { -# echo "Stopping uvicorn process (PID: $UVICORN_PID)..." -# kill "$UVICORN_PID" 2>/dev/null # Graceful shutdown (SIGTERM) -# wait "$UVICORN_PID" 2>/dev/null # Wait for process to exit -# echo "Stopping background process (PID: $CELERY_PID)..." -# kill "$CELERY_PID" 2>/dev/null # Graceful shutdown (SIGTERM) -# wait "$CELERY_PID" 2>/dev/null # Wait for process to exit -# } -# trap cleanup EXIT SIGINT SIGTERM +cleanup() { + echo "Stopping background process (PID: $CELERY_PID)..." + kill "$CELERY_PID" 2>/dev/null # Graceful shutdown (SIGTERM) + wait "$CELERY_PID" 2>/dev/null # Wait for process to exit + +} +trap cleanup EXIT SIGINT SIGTERM # celery -A celery_app worker -D # PROD - uvicorn api.app:app --host 0.0.0.0 --port 5001 --reload --reload-exclude "data" --log-level debug # UVICORN_PID=$!