diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..369f4ef --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Ensure shell scripts always use LF so they run in Linux containers (e.g. Docker) +*.sh text eol=lf diff --git a/scripts/wait-for-api.sh b/scripts/wait-for-api.sh index 2848cd4..285a4be 100755 --- a/scripts/wait-for-api.sh +++ b/scripts/wait-for-api.sh @@ -1,18 +1,21 @@ -#!/bin/bash +#!/bin/sh # Wait for the API to be healthy before starting the frontend # This prevents the "Unable to Connect to API Server" error during startup +# POSIX-compliant so it runs with /bin/sh (dash) in slim images API_URL="${INTERNAL_API_URL:-http://localhost:5055}" -MAX_RETRIES=60 # 60 retries * 5 seconds = 5 minutes max wait +MAX_RETRIES=60 RETRY_INTERVAL=5 +i=0 echo "Waiting for API to be ready at ${API_URL}/health..." -for i in $(seq 1 $MAX_RETRIES); do +while [ $i -lt $MAX_RETRIES ]; do if curl -s -f "${API_URL}/health" > /dev/null 2>&1; then echo "API is ready! Starting frontend..." exit 0 fi + i=$((i + 1)) echo "Attempt $i/$MAX_RETRIES: API not ready yet, waiting ${RETRY_INTERVAL}s..." sleep $RETRY_INTERVAL done