diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 9b95b408..ed353678 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -224,16 +224,21 @@ jobs: echo "⏳ Waiting for services to be healthy..." MAX_RETRIES=12 RETRY_COUNT=0 - until curl -s -f http://localhost:3000/health > /dev/null || [ \$RETRY_COUNT -eq \$MAX_RETRIES ]; do + until curl -s -f http://127.0.0.1:3000/health > /dev/null || [ \$RETRY_COUNT -eq \$MAX_RETRIES ]; do echo " • Waiting for health check... (\$((RETRY_COUNT + 1))/\$MAX_RETRIES)" + # Log the output of curl for debugging if it fails + curl -v http://127.0.0.1:3000/health 2>&1 | grep -E "< HTTP/|* Connection" || true sleep 5 RETRY_COUNT=\$((RETRY_COUNT + 1)) done if [ \$RETRY_COUNT -eq \$MAX_RETRIES ]; then echo "❌ Health check failed after \$MAX_RETRIES retries" + echo "🔍 Container status:" + docker-compose ps + echo "" echo "🔍 Container logs:" - docker-compose logs --tail=50 + docker-compose logs --tail=100 exit 1 fi diff --git a/Dockerfile b/Dockerfile index a52440c5..1f7a40e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM node:20-alpine AS base # Install dependencies only when needed FROM base AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. -RUN apk add --no-cache libc6-compat +RUN apk add --no-cache libc6-compat curl WORKDIR /app # Install dependencies based on the preferred package manager @@ -41,6 +41,9 @@ RUN npm run build FROM base AS runner WORKDIR /app +# Install curl for health checks +RUN apk add --no-cache curl + ENV NODE_ENV=production # Uncomment the following line in case you want to disable telemetry during runtime. # ENV NEXT_TELEMETRY_DISABLED 1 diff --git a/docker-compose.yml b/docker-compose.yml index 3c3a7001..bbbee52b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: env_file: - .env healthcheck: - test: ["CMD-SHELL", "curl -f http://localhost:3000/health || exit 1"] + test: ["CMD-SHELL", "curl -f http://127.0.0.1:3000/health || exit 1"] interval: 10s timeout: 5s retries: 5