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

112 lines
3.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:**
```bash
# 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:**
```bash
# 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:**
```yaml
fedimint:
image: fedimint/fedimintd:v0.3.0
container_name: archy-fedimint
ports:
- "8173:8173"
```
**After:**
```yaml
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:
```bash
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