wsl-labs GitHub

🛠️ RUNBOOK — WSL Container Center#

Guía operativa del día a día para construir, levantar, monitorear y bajar contenedores con wslc desde Windows. Para el setup inicial, consulta ENVIRONMENT_SETUP.md.

🩺 1 · Validar el motor antes de operar#

wsl --version
& "C:\Program Files\WSL\wslc.exe" version
node --version

Debes ver:


🖥️ 2 · Levantar el panel#

cd C:\dev\wsl-labs
node dashboard-server/server.js
# o:
make serve

Abre → http://localhost:9092

El servidor escucha solo en 127.0.0.1. No se expone a la red por diseño (ver SECURITY.md).

▶️ 3 · Construir, levantar y bajar casos#

El flujo recomendado es 100 % desde el panel, sin contraseñas y sin terminal. El panel ejecuta wslc.exe en Windows (Windows ya autenticó al usuario), así que nunca pide contraseña.

1. Abre  →  http://localhost:9092
2. Pulsa 🔨 Construir  → construye la imagen del caso (solo si tiene Dockerfile)
3. Pulsa ▶ Levantar    → crea la red (si aplica) y arranca los contenedores
4. Pulsa 📄 Logs / 🛑 Bajar según lo necesites
Los casos que usan imágenes oficiales (RabbitMQ, Prometheus/Grafana, Elasticsearch, Jenkins) no necesitan Construir: pulsa directamente Levantar.

Por API (modo dev, sin token)#

Cada caso se identifica por su id del catálogo:

$h = @{ 'Content-Type' = 'application/json' }

# Construir la imagen del caso 01
Invoke-RestMethod -Method Post -Headers $h -Body '{ "id": "01" }' http://localhost:9092/api/wslc/build

# Levantar el caso 01
Invoke-RestMethod -Method Post -Headers $h -Body '{ "id": "01" }' http://localhost:9092/api/wslc/up

# Ver logs del caso 01
Invoke-RestMethod -Method Post -Headers $h -Body '{ "id": "01" }' http://localhost:9092/api/wslc/logs

# Bajar el caso 01
Invoke-RestMethod -Method Post -Headers $h -Body '{ "id": "01" }' http://localhost:9092/api/wslc/down
Si activaste WSL_LABS_TOKEN, añade el header Authorization: Bearer <token> a cada llamada /api.

Por terminal (make build-* / wslc directo)#

make build-node    # construye wsl-labs/node-api:latest
& "C:\Program Files\WSL\wslc.exe" run -d --name wslc-node-api -p 8101:3000 wsl-labs/node-api:latest

✅ 4 · Verificar salud#

# Estado global de todos los casos
Invoke-RestMethod http://localhost:9092/api/wslc/overview

# Respuesta real de un caso (p. ej. node-api en :8101)
Invoke-WebRequest http://localhost:8101 -UseBasicParsing

📡 5 · Casos y puertos#

CasoidCategoríaPuerto hostURL
🧭 Panel9092http://localhost:9092
🟢 API Node.js01starter8101http://localhost:8101
🐍 API Python (Flask)03starter8102http://localhost:8102
🐹 API Go10starter8103http://localhost:8103
🌐 Nginx web06starter8104http://localhost:8104
🔴 Cache Redis + app04platform8105http://localhost:8105
🐘 API + PostgreSQL05platform8106http://localhost:8106
🐬 LAMP (PHP + MariaDB)02platform8107http://localhost:8107
🐇 RabbitMQ07infra8109http://localhost:8109
📊 Prometheus + Grafana08infra8110http://localhost:8110
🍃 Multi-servicio (Mongo)09platform8112http://localhost:8112
🔎 Elasticsearch11infra8113http://localhost:8113
🔧 Jenkins CI12infra8114http://localhost:8114
Los casos multi-contenedor (04, 05, 02, 09, 08) crean una red wslc propia y conectan los contenedores por nombre.

⚡ 6 · Comandos wslc rápidos#

$wslc = "C:\Program Files\WSL\wslc.exe"

# Contenedores e imágenes
& $wslc list                 # contenedores (≈ docker ps)
& $wslc images               # imágenes locales

# Logs y ciclo de vida
& $wslc logs wslc-node-api
& $wslc stop wslc-node-api
& $wslc rm wslc-node-api

# Redes y volúmenes
& $wslc network ls
& $wslc volume ls

Atajos con make:

make ps        # wslc list
make images    # wslc images
make prune     # elimina contenedores parados + imágenes colgadas

🧹 7 · Limpieza#

$wslc = "C:\Program Files\WSL\wslc.exe"

# Bajar un caso concreto (desde el panel: botón 🛑 Bajar)
& $wslc stop wslc-node-api; & $wslc rm wslc-node-api

# Limpieza general
make prune                   # contenedores parados + imágenes colgadas
& $wslc network prune        # redes wslc sin usar
make prune elimina contenedores parados e imágenes colgadas. Si tienes un caso pesado ya construido (Elasticsearch, Jenkins) y quieres conservar su imagen, no la borres a mano.

🚀 8 · Uso del launcher#

  1. Ejecuta wsl-labs-launcher.exe (doble clic o desde PowerShell).
  2. El launcher verifica WSL y localiza wslc.
  3. Localiza la raíz del repo (directorio del .exe o WSL_LABS_HOME).
  4. Arranca el panel (node dashboard-server/server.js) en segundo plano.
  5. Hace polling a /api/wslc/overview.
  6. Abre el navegador en http://localhost:9092.
Puedes cerrar la ventana del launcher: el panel sigue corriendo en segundo plano.

🧪 9 · Verificación automatizada#

# desde la raíz del repo
node dashboard-server/verify-localhost.js
# o
make test-dashboard

🏗️ Criterio operativo#

CapaResponsabilidad
🪟 WindowsCapa de UX (panel, launcher) y ejecución de wslc.exe
🐳 wslcMotor de contenedores nativo de WSL (build/run/network)
🌐 localhostSuperficie de puertos host publicados por los contenedores
📇 containers/containers.config.jsonFuente única de verdad del catálogo

📖 Ver también: ENVIRONMENT_SETUP.md · CONTRIBUTING.md · docs/wslc-contenedores.md

Fuente: RUNBOOK.md