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

5.4 KiB
Raw Permalink Blame History

🐳 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:


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:

  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

# 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

# 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! 🚀🐳