5.4 KiB
🐳 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:
# 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:
# Assuming you have k484-package/ directory with a Dockerfile
cd ~/k484-package
docker build -t k484:0.1.0 .
For atob:
# Assuming you have atob-package/ directory with a Dockerfile
cd ~/atob-package
docker build -t atob:0.1.0 .
For amin:
cd ~/amin-package
docker build -t amin:0.1.0 .
3. Restart the Dev Server
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:
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:
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:
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:
- Open Docker Desktop
- Wait for it to fully start (whale icon in menu bar should be steady)
- 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
# 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:
- Checks if Docker daemon is running
- Checks if image exists for the app
- Tries to start container if possible
- 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
# 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! 🚀🐳