Files
archy-demo/neode-ui/DOCKER-APPS.md
2026-03-17 02:14:04 +00:00

257 lines
5.4 KiB
Markdown
Raw Permalink 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.
# 🐳 Running Real Apps with Docker
The mock backend can run **actual** Docker containers for your apps, not just simulate them!
## Current Status
Check the banner when starting the mock backend:
```
🐳 Available (apps will run for real!) ← Docker is running, apps will work!
⚠️ Not available (simulated mode) ← Docker off, apps simulated only
```
## Setup for Real Apps
### 1. Start Docker Desktop
Make sure Docker Desktop is running:
```bash
# Check if Docker daemon is running
docker ps
# If you see: "Cannot connect to the Docker daemon..."
# → Open Docker Desktop application
```
### 2. Build Your App Docker Images
For each app you want to run, you need a Docker image built with the exact name and version:
**For k484:**
```bash
# Assuming you have k484-package/ directory with a Dockerfile
cd ~/k484-package
docker build -t k484:0.1.0 .
```
**For atob:**
```bash
# Assuming you have atob-package/ directory with a Dockerfile
cd ~/atob-package
docker build -t atob:0.1.0 .
```
**For amin:**
```bash
cd ~/amin-package
docker build -t amin:0.1.0 .
```
### 3. Restart the Dev Server
```bash
npm stop
npm start
```
You should now see: `🐳 Available (apps will run for real!)`
### 4. Install Apps in the UI
Visit http://localhost:8100, go to Marketplace, and install apps.
You'll see logs like:
```
[Package] 📦 Installing k484...
[Package] 🐳 Docker available, attempting to run container...
[Package] 🐳 Docker container running on port 8103
[Package] ✅ k484 installed and RUNNING at http://localhost:8103
```
### 5. Launch Apps
Click "Launch" on any installed app - it will open at:
- **atob**: http://localhost:8102
- **k484**: http://localhost:8103
- **amin**: http://localhost:8104
---
## Port Mapping
The mock backend uses fixed ports for known apps:
| App | Port | Container Name |
|-----|------|----------------|
| atob | 8102 | atob-test |
| k484 | 8103 | k484-test |
| amin | 8104 | amin-test |
| Other apps | 8105+ | {id}-test |
---
## Docker Image Requirements
Each app needs a Docker image with:
- **Name**: `{app-id}:0.1.0`
- **Port**: Expose port 80 inside container
- **Format**: Standard web app serving HTTP
Example Dockerfile:
```dockerfile
FROM nginx:alpine
COPY dist/ /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
---
## Troubleshooting
### "Docker image not found"
**Problem**: App installs but logs show:
```
[Package] Docker image k484:0.1.0 not found, using simulation mode
```
**Solution**: Build the Docker image first:
```bash
cd ~/k484-package
docker build -t k484:0.1.0 .
```
### "Port is already allocated"
**Problem**:
```
Bind for 0.0.0.0:8103 failed: port is already allocated
```
**Solution**: Stop the existing container:
```bash
docker stop k484-test
docker rm k484-test
```
Or use the UI to uninstall the app first, which will clean up the container.
### "Cannot connect to Docker daemon"
**Problem**:
```
⚠️ Not available (simulated mode)
```
**Solution**:
1. Open Docker Desktop
2. Wait for it to fully start (whale icon in menu bar should be steady)
3. Restart dev server: `npm stop && npm start`
### App appears installed but Launch doesn't work
**Simulated mode**: The app is only simulated in the database, no real container is running.
**Check the logs** when installing to see if Docker was used:
```
# Docker mode (good):
[Package] 🐳 Docker container running on port 8103
[Package] ✅ k484 installed and RUNNING at http://localhost:8103
# Simulated mode (no container):
[Package] Docker not available, using simulation mode
[Package] ✅ k484 installed (simulated - no Docker container)
```
---
## Checking Running Containers
```bash
# List all running containers
docker ps
# Check specific container
docker ps --filter name=k484-test
# View container logs
docker logs k484-test
# Stop a container
docker stop k484-test
# Remove a container
docker rm k484-test
```
---
## Benefits of Docker Mode
**Real apps** - Actually test your applications
**Full functionality** - All features work (not just UI)
**Integration testing** - Test API calls, WebSocket, etc.
**Realistic development** - Matches production environment
## Benefits of Simulated Mode
**No Docker required** - Lightweight development
**Fast startup** - No containers to build/start
**UI testing** - Perfect for frontend-only work
**Lower resource usage** - No Docker overhead
---
## Auto-Detection
The mock backend automatically:
1. Checks if Docker daemon is running
2. Checks if image exists for the app
3. Tries to start container if possible
4. Falls back to simulation if Docker unavailable
This means you can develop with or without Docker, and the system adapts automatically!
---
## Uninstalling Apps
When you uninstall an app through the UI:
- **Docker mode**: Stops and removes the container
- **Simulated mode**: Just removes from database
Both clean up properly - no manual cleanup needed!
---
## Quick Reference
```bash
# Start Docker Desktop first
open -a Docker
# Build images (one-time setup)
cd ~/k484-package && docker build -t k484:0.1.0 .
cd ~/atob-package && docker build -t atob:0.1.0 .
# Start dev servers
cd neode-ui
npm start
# Should see: 🐳 Available (apps will run for real!)
# Install apps via UI at http://localhost:8100
# Apps will actually run at their ports!
# Stop everything when done
npm stop
```
---
Happy coding! 🚀🐳