Integrate Docker support into Archipelago and Neode UI
- Added StateManager and data_model modules to manage application state. - Updated ApiHandler to utilize StateManager for WebSocket connections. - Enhanced Server initialization to include StateManager. - Implemented Docker container querying in Neode UI to populate app data dynamically. - Removed temporary dummy app configurations in favor of real Docker-based applications. - Improved WebSocket reconnection logic and error handling in the UI. - Updated package.json and package-lock.json to include dockerode dependency.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# ✅ DOCKER INTEGRATION COMPLETE
|
||||
|
||||
## What Changed
|
||||
|
||||
The development environment now uses **real Docker containers** instead of dummy data.
|
||||
|
||||
### Before
|
||||
```
|
||||
[Apps] Dummy apps available: 13 apps
|
||||
[Apps] Returning dummy apps
|
||||
```
|
||||
**Result**: Fake data, no real apps
|
||||
|
||||
### After
|
||||
```
|
||||
[Docker] Found 1 containers (1 running)
|
||||
[Docker] Apps detected:
|
||||
- Bitcoin Core (running) → http://localhost:18443
|
||||
[Apps] Real packages from store: 1 apps
|
||||
```
|
||||
**Result**: Real Docker containers shown in UI
|
||||
|
||||
## How to Use
|
||||
|
||||
### 1. Start Mock Backend
|
||||
```bash
|
||||
cd neode-ui
|
||||
npm run backend:mock
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
[Docker] Querying running containers...
|
||||
[Docker API: ✅ Connected
|
||||
```
|
||||
|
||||
### 2. Start Docker Containers
|
||||
```bash
|
||||
# Start Bitcoin Core
|
||||
docker compose up -d bitcoin
|
||||
|
||||
# Or start multiple
|
||||
docker compose up -d bitcoin grafana homeassistant
|
||||
```
|
||||
|
||||
### 3. Start UI
|
||||
```bash
|
||||
cd neode-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 4. View in Browser
|
||||
Open http://localhost:8100 → "My Apps"
|
||||
|
||||
**You'll see:**
|
||||
- ✅ Real containers from docker-compose
|
||||
- ✅ Correct status (running/stopped)
|
||||
- ✅ Launch buttons that work
|
||||
- ✅ Live updates every 5 seconds
|
||||
|
||||
## What Works Now
|
||||
|
||||
### Real Container Detection
|
||||
- Backend queries Docker API every 5 seconds
|
||||
- Detects all `archy-*` containers
|
||||
- Shows real state (running/stopped)
|
||||
- Extracts ports automatically
|
||||
- Broadcasts updates via WebSocket
|
||||
|
||||
### App Display
|
||||
- Bitcoin Core appears when `archy-bitcoin` runs
|
||||
- Grafana appears when `archy-grafana` runs
|
||||
- All 13 apps supported (see docker-compose.yml)
|
||||
- Alphabetically sorted
|
||||
- Status badges (green=running, gray=stopped)
|
||||
|
||||
### Launch Functionality
|
||||
- Launch button enabled when app is running
|
||||
- Opens correct port (http://localhost:18443 for Bitcoin)
|
||||
- All ports mapped correctly
|
||||
|
||||
## Console is Clean
|
||||
|
||||
**No more:**
|
||||
- ❌ "Dummy apps available"
|
||||
- ❌ "Returning dummy apps"
|
||||
- ❌ External API errors (Start9, GitHub)
|
||||
|
||||
**Now shows:**
|
||||
- ✅ "Real packages from store"
|
||||
- ✅ Actual container count
|
||||
- ✅ Clean logs
|
||||
|
||||
## Files Modified
|
||||
|
||||
1. **neode-ui/package.json** - Added `dockerode`
|
||||
2. **neode-ui/mock-backend.js** - Docker API integration
|
||||
3. **neode-ui/src/views/Apps.vue** - Removed dummy logic
|
||||
|
||||
## Testing Completed
|
||||
|
||||
✅ Backend connects to Docker API
|
||||
✅ Detects running Bitcoin container
|
||||
✅ Shows correct app data in UI
|
||||
✅ Live updates work (5-second poll)
|
||||
✅ Launch button opens correct URL
|
||||
✅ Console output is clean
|
||||
|
||||
## Next: Start All Apps
|
||||
|
||||
To see the full app list:
|
||||
|
||||
```bash
|
||||
cd /Users/dorian/Projects/archy
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
This starts all 13+ apps defined in docker-compose.yml. They'll automatically appear in "My Apps" within 5 seconds.
|
||||
|
||||
---
|
||||
|
||||
**Status**: ✅ COMPLETE - Real Docker integration working
|
||||
**No more dummy data** - Only real containers shown
|
||||
Reference in New Issue
Block a user