archy/DOCKER_HEALTH_CHECK_FIX.md
Dorian 6a018e4953 Implement Bitcoin and LND UI in Docker setup and enhance startup script
- Added Docker services for Bitcoin Core UI and LND UI, providing web interfaces for both applications.
- Updated the startup script to improve image pulling process and service readiness checks with retries.
- Modified the app view to open the Bitcoin Core UI in a new tab instead of routing through the app.
- Removed the Bitcoin Core Vue component as it is no longer needed, streamlining the UI structure.
- Excluded backend services from the app listing to improve clarity in the Docker package scanner.
2026-01-27 23:57:29 +00:00

3.0 KiB
Raw Blame History

Docker Health Check Fix - Complete

Problem

The start-docker-apps.sh script was failing because:

  1. Health checks were too impatient (only 5 seconds wait)
  2. The script exited with error if services weren't ready immediately
  3. Services like Grafana and SearXNG need 30-60 seconds to fully start
  4. Fedimint image had a platform mismatch warning on ARM64 Macs

Solutions Applied

1. Improved Health Check Logic (start-docker-apps.sh)

Before:

# Wait 5 seconds, check once, fail if not ready
sleep 5
check_service "Grafana" "http://localhost:3000"
check_service "SearXNG" "http://localhost:8082"
# If not ready, exit with error

After:

# Wait up to 60 seconds with retries
MAX_ATTEMPTS=30
ATTEMPT=0

while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
    READY_COUNT=0
    
    check_service "Grafana" "http://localhost:3000" && ((READY_COUNT++)) || true
    check_service "SearXNG" "http://localhost:8082" && ((READY_COUNT++)) || true
    check_service "Endurain" "http://localhost:8084" && ((READY_COUNT++)) || true
    check_service "MorphOS" "http://localhost:8081" && ((READY_COUNT++)) || true
    
    if [ $READY_COUNT -ge 2 ]; then
        echo "   ✅ Core services are ready!"
        break
    fi
    
    sleep 2
    ((ATTEMPT++))
done

# Non-blocking - informational only
if [ $READY_COUNT -lt 2 ]; then
    echo "     Some services are still starting (this is normal)"
    echo "   💡 They will be available shortly. Check with: docker compose ps"
fi

Key improvements:

  • Retries up to 30 times (60 seconds total)
  • Non-blocking (doesn't fail if services aren't ready)
  • Informational messages to reassure users
  • Continues startup even if services are still initializing

2. Fixed Fedimint Platform Warning (docker-compose.yml)

Before:

fedimint:
  image: fedimint/fedimintd:v0.3.0
  container_name: archy-fedimint
  ports:
    - "8173:8173"

After:

fedimint:
  image: fedimint/fedimintd:v0.3.0
  container_name: archy-fedimint
  platform: linux/amd64  # Emulate x86 on ARM Macs
  ports:
    - "8173:8173"

This tells Docker to use x86 emulation for Fedimint on ARM Macs, eliminating the warning.

Testing

Run the dev server again:

cd scripts
bash dev-start.sh
# Choose option 2 (Full stack)

Expected behavior:

  1. Docker containers create and start successfully
  2. Health check waits patiently for services
  3. Script continues even if some services are still initializing
  4. No platform mismatch warnings
  5. Backend and frontend start without errors

Files Modified

  • /Users/dorian/Projects/archy/start-docker-apps.sh - Improved health check logic
  • /Users/dorian/Projects/archy/docker-compose.yml - Added platform specification for Fedimint

Next Steps

Once you confirm this works:

  1. Bitcoin Core should appear in the My Apps section
  2. You should be able to launch it and see the custom UI
  3. Stop/Start functionality should work
  4. All 13 Docker apps should be running in the background