wsl-labs GitHub

🧾 Referencia de runtime por caso — WSL Container Center#

Versión: 0.3.0 Estado: 🟢 Activo Objetivo: Referencia operativa por caso — imagen(es), puerto host, comando wslc de arranque real, red, health y RAM aproximada

🗺️ Esquema#

flowchart TD
    Cfg["containers.config.json"]
    Cfg --> Build["wslc build (imágenes custom)"]
    Cfg --> Net["wslc network create (platform/obs)"]
    Build --> Up["wslc run -d -p host:container"]
    Net --> Up
    Up --> Ctr["contenedor(es)"]
    Ctr --> Port["puerto en localhost"]
    Port --> Health["health-check: http"]

📖 Cómo leer esta tabla#

wslc build desde un Dockerfile, el resto son oficiales (wslc pull implícito).

Los valores de RAM aquí son orientativos. Para datos medidos (tamaño real de imagen con wslc images y RAM en reposo con wslc stats, más mínimo/recomendado por caso y del sistema), consulta REQUIREMENTS.md → sección "Tamaños y RAM medidos". El panel muestra el 💾 tamaño y la 🧠 RAM de cada caso en su tarjeta.


🖥️ Requisitos globales#

Software mínimo#

Hardware recomendado por escenario#

EscenarioCPURAMDisco libre
Panel + 1–2 casos starter (01, 06)2 núcleos4 GB10 GB
Panel + un caso platform (04, 05, 02, 09)4 núcleos8 GB20 GB
Panel + infra pesada (11 ES o 12 Jenkins)4 núcleos8–16 GB25 GB

🟢 Matriz — casos starter (un contenedor)#

CasoImagenPuerto hostComando wslc de arranque realRedHealthRAM aprox.
01-node-apiwsl-labs/node-api:latest (custom)8101wslc run -d --name wslc-node-api -p 8101:3000 wsl-labs/node-api:latesthttp~40 MB
03-python-apiwsl-labs/python-api:latest (custom)8102wslc run -d --name wslc-python-api -p 8102:5000 wsl-labs/python-api:latesthttp~55 MB
10-go-apiwsl-labs/go-api:latest (custom, multi-stage)8103wslc run -d --name wslc-go-api -p 8103:8080 wsl-labs/go-api:latesthttp~20 MB
06-nginx-webwsl-labs/nginx-web:latest (custom)8104wslc run -d --name wslc-nginx-web -p 8104:80 wsl-labs/nginx-web:latesthttp~15 MB
Las imágenes wsl-labs/* se construyen una vez con wslc build -t <imagen> containers/<caso> antes del primer wslc run.

🧩 Matriz — casos platform (app + datos por red wslc)#

Cada caso crea una red wslc, levanta el backend de datos y luego la app conectada por nombre de contenedor.

CasoImágenesPuerto hostRedHealthRAM aprox.
04-redis-cacheredis:7-alpine + wsl-labs/redis-app:latest8105wslc-redis-nethttp~70 MB
05-postgres-apipostgres:15 + wsl-labs/pg-app:latest8106wslc-pg-nethttp~130 MB
02-php-lampmariadb:10.6 + wsl-labs/php-lamp:latest8107wslc-lamp-nethttp~180 MB
09-multi-servicemongo:7 + wsl-labs/multi-backend:latest8112wslc-multi-nethttp~200 MB

Comandos de arranque real (patrón, mostrado para 04-redis-cache):

wslc network create wslc-redis-net
wslc run -d --name wslc-redis --network wslc-redis-net redis:7-alpine
wslc run -d --name wslc-redis-app --network wslc-redis-net -e REDIS_HOST=wslc-redis -p 8105:3000 wsl-labs/redis-app:latest

Variables de conexión por caso:

CasoBackendLa app apunta a
04-redis-cachewslc-redisREDIS_HOST=wslc-redis
05-postgres-apiwslc-postgres (POSTGRES_DB=app)PG_HOST=wslc-postgres
02-php-lampwslc-mariadb (MARIADB_DATABASE=app)DB_HOST=wslc-mariadb
09-multi-servicewslc-mongoMONGO_HOST=wslc-mongo

🏗️ Matriz — casos infra (imágenes oficiales)#

CasoImagen(es)Puerto hostComando wslc de arranque realRedHealthRAM aprox.
07-rabbitmqrabbitmq:3-management8109 (+5672)wslc run -d --name wslc-rabbitmq -p 8109:15672 -p 5672:5672 rabbitmq:3-managementhttp~120 MB
08-prometheus-grafanaprom/prometheus + grafana/grafana8110/8111red wslc-obs-net + wslc run de Prometheus (8111:9090) y Grafana (8110:3000)wslc-obs-nethttp~180 MB
11-elasticsearchelasticsearch:8.11.08113wslc run -d --name wslc-elasticsearch -p 8113:9200 -e discovery.type=single-node -e xpack.security.enabled=false -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch:8.11.0http~1.2 GB
12-jenkinsjenkins/jenkins:lts8114wslc run -d --name wslc-jenkins -p 8114:8080 jenkins/jenkins:ltshttp~600 MB
11-elasticsearch y 12-jenkins pesan: ambos corren sobre JVM. Elasticsearch reserva ~512 MB de heap (más overhead) y Jenkins tarda en arrancar. No los levantes junto a varios casos platform si tienes 8 GB o menos.

Health esperado por caso#

CasoRespuesta verificada
starter (01, 03, 10, 06)HTTP 200
04, 05, 02, 09HTTP 200 (app) + backend de datos alcanzable
07-rabbitmqpanel admin HTTP 200/302
08-prometheus-grafanaGrafana 302 (login), Prometheus 200
11-elasticsearchHTTP 200 en / (JSON del clúster)
12-jenkinsHTTP 403 (setup inicial protegido) — el servicio está vivo

💡 Recomendaciones de uso#

Si tienes 4 GB de RAM#

Si tienes 8 GB de RAM#

Flujo más rápido para probar el motor#

  1. 06-nginx-web — verifica el ciclo wslc buildwslc run
  2. 04-redis-cache — primer multi-contenedor con red wslc
  3. 08-prometheus-grafana — dos servicios oficiales conectados

📚 Documentos relacionados#

Fuente: docs/LABS_RUNTIME_REFERENCE.md