wsl-labs GitHub

🏗️ FILE_ARCHITECTURE — WSL Container Center#

Árbol comentado del repositorio y guía de qué editar / qué no. Para el contexto de cada componente, consulta el README.md.

🌳 Árbol de archivos#

wsl-labs/
│
├── containers/                         # 🐳 CASOS DE CONTENEDOR (wslc)
│   ├── containers.config.json          # 📇 CATÁLOGO — fuente única de verdad
│   ├── 01-node-api/                    # 🟢 API Node.js  → :8101 (imagen propia)
│   ├── 02-php-lamp/                    # 🐬 LAMP PHP+MariaDB → :8107 (red wslc)
│   ├── 03-python-api/                  # 🐍 API Flask   → :8102 (imagen propia)
│   ├── 04-redis-cache/                 # 🔴 App + Redis → :8105 (red wslc)
│   ├── 05-postgres-api/                # 🐘 API + PostgreSQL → :8106 (red wslc)
│   ├── 06-nginx-web/                   # 🌐 Nginx web   → :8104 (imagen propia)
│   ├── 07-rabbitmq/                    # 🐇 RabbitMQ    → :8109 (imagen oficial)
│   ├── 08-prometheus-grafana/          # 📊 Prometheus+Grafana → :8110 (red wslc)
│   ├── 09-multi-service/               # 🍃 Backend + Mongo → :8112 (red wslc)
│   ├── 10-go-api/                      # 🐹 API Go      → :8103 (imagen propia)
│   ├── 11-elasticsearch/               # 🔎 Elasticsearch → :8113 (imagen oficial)
│   └── 12-jenkins/                     # 🔧 Jenkins CI  → :8114 (imagen oficial)
│       └── (cada caso: Dockerfile si es imagen propia, código, README.md)
│
├── dashboard-server/
│   ├── server.js                       # 🌐 Panel — API wslc + estáticos (Node http nativo)
│   ├── verify-localhost.js             # 🧪 Smoke test del catálogo y del endpoint overview
│   └── package.json                    # metadatos (sin dependencias runtime)
│
├── launcher/
│   └── windows/
│       ├── main.go                     # 🚀 Launcher Go (.exe) — arranca el panel y abre el browser
│       └── go.mod                      # módulo Go (solo stdlib)
│
├── installer/
│   └── wsl-labs.iss                    # 📦 Script Inno Setup — empaqueta el launcher en .exe
│
├── docs/                               # 📚 Contexto de WSL + guía wslc
│   ├── 00-que-es-wsl.md                # Fundamentos de WSL (contexto)
│   ├── 01-instalacion-wsl.md           # Instalación (contexto)
│   ├── 02-comandos-basicos.md          # Comandos (contexto)
│   ├── 03-wsl-vs-docker-vs-vm.md       # Comparativa (contexto)
│   ├── 04-buenas-practicas.md          # Buenas prácticas (contexto)
│   ├── 05-roadmap.md                   # Notas de evolución (contexto)
│   ├── wsl-historia-y-referencia.md    # Historia y referencia de WSL (contexto)
│   ├── wslc-contenedores.md            # 🐳 Guía del motor wslc
│   └── MAINTAINERS.md                  # Guía de mantenedores
│
├── cheatsheets/                        # comandos-wsl, comandos-linux, systemd, redes… (contexto)
├── assets/branding/                    # identidad visual de la línea
├── .github/                            # workflows CI + ISSUE_TEMPLATE + PR template
│
├── index.html                          # 🌐 UI del panel
├── dashboard.css                       # 🎨 Estilos del panel
├── dashboard.js                        # ⚡ Lógica del panel
│
├── Makefile                            # Targets: serve, test-dashboard, build-<caso>, ps, images, prune
├── version.txt                         # Versión canónica del proyecto
├── README.md                           # Punto de entrada del repositorio
└── LICENSE                             # Apache-2.0
docs/00-05, wsl-historia-y-referencia.md y cheatsheets/ son documentación de contexto sobre WSL. El foco operativo del repo son los contenedores en containers/.

🔑 Qué editar / qué no#

ArchivoRol¿Editar?
containers/containers.config.jsonFuente de verdad del catálogo (casos, puertos, imágenes, contenedores, redes)Editar aquí
containers/NN-*/DockerfileImagen propia de un caso✅ (si es imagen propia)
containers/NN-*/README.mdGuía de cada caso
dashboard-server/server.jsBackend que invoca wslc.exe
dashboard-server/verify-localhost.jsValida el catálogo y el panel
launcher/windows/main.goLauncher Go
installer/wsl-labs.issScript Inno Setup del instalador
index.html · dashboard.css · dashboard.jsUI del panel
version.txtVersión canónica✅ (al publicar release)
wsl-labs-launcher.exeBinario compilado del launcher❌ Se genera con go build
Puertos/imágenes hardcodeados en la UI❌ No los dupliques; salen del catálogo
containers/containers.config.json es la única fuente de verdad. El panel y el launcher lo leen directamente. Si cambias un puerto, imagen o contenedor, hazlo ahí y refléjalo en el README del caso afectado.

[1] containers/containers.config.json   ← fuente de verdad (casos, puertos, imágenes, redes)
        │
        ├─▶ dashboard-server/server.js   → GET /api/wslc/overview
        │                                  POST /api/wslc/{build|up|down|logs}
        │
        └─▶ launcher/windows/main.go     → arranca el panel, hace polling, abre el browser
        │
        ▼
[2] Panel (:9092)                        ← invoca C:\Program Files\WSL\wslc.exe (en Windows)
        │
        ▼
[3] Contenedores wslc                    ← node-api :8101, python-api :8102, go-api :8103,
                                           nginx :8104, redis-app :8105, pg-app :8106,
                                           php-lamp :8107, rabbitmq :8109, grafana :8110,
                                           multi :8112, elasticsearch :8113, jenkins :8114

📖 Ver también: README.md · CONTRIBUTING.md · DEVELOPING.md · RUNBOOK.md

Fuente: FILE_ARCHITECTURE.md