🐳 docker-labs GitHub ↗
Docker · Compose · v1.5.0

Trece entornos Docker que se encienden y se apagan cuando tú quieres

docker-labs no es una carpeta de demos sueltas. Es un workspace con un panel de control propio: levantas el laboratorio que necesitas, lo usas, y lo bajas para recuperar la RAM. Cuatro de esos entornos funcionan juntos como una plataforma real —gateway, core transaccional y portal operativo— y los otros nueve se levantan solos, cada uno con su stack.

12laboratorios operativos
4servicios de plataforma
19tecnologías distintas
55documentos publicados

El problema que resuelve

Un repositorio de laboratorios Docker suele terminar igual: veinte carpetas, veinte docker compose up, puertos que chocan entre sí y un equipo que se queda sin memoria porque todo quedó encendido. Aquí eso se ataca de frente.

🎛️ Un panel, no una lista de comandos

El Control Center corre dockerizado en localhost:9090 y habla con el daemon de Docker. Desde ahí levantas, reinicias, detienes y lees los logs de cualquier lab sin memorizar rutas ni puertos.

  • Estado real de cada stack: detenido, corriendo o saludable.
  • Los enlaces de entrada de cada sistema, ya resueltos.
  • Diagnóstico de la capacidad asignada a Docker.

💾 Tu RAM decide qué se enciende

Cada laboratorio declara la memoria que necesita. El panel la compara con la que Docker tiene libre en ese momento y te dice si conviene arrancarlo ahora o bajar otra cosa primero.

  • Verde: hay memoria de sobra para arrancarlo.
  • Amarillo: entra justo, conviene liberar antes.
  • Rojo: Docker no tiene suficiente memoria total.

Cómo encaja todo

Los cuatro servicios de plataforma se levantan juntos y se hablan entre ellos. Los nueve laboratorios independientes no dependen de nadie: son entornos de estudio de un stack concreto.

flowchart LR
    U([Usuario])

    subgraph P["Plataforma — 4 servicios activos"]
        CC["Control Center
:9090"] GW["Gateway
:8085"] IC["Inventory Core
:8000"] OP["Operations Portal
:8083"] PG[("PostgreSQL
:5432")] MG[("MongoDB
:27017")] end subgraph L["9 labs independientes — levantar a voluntad"] LA["01 Node :3000
02 LAMP :8081
03 Python :5000"] LB["04 Redis :3001
07 RabbitMQ :15672
08 Prometheus :9091"] LC["10 Go :8084
11 Elastic :8001
12 Jenkins :8080"] end U --> CC & GW GW --> CC & IC & OP IC --> PG OP --> IC & MG

El detalle de puertos, endpoints y health checks está en Especificaciones técnicas, y el razonamiento de diseño en Arquitectura.

Arranca en tres pasos

Con Docker Desktop instalado y corriendo. En Windows el instalador hace los tres de una vez.

Clona el repositorio

No hay dependencias que instalar: todo corre dentro de contenedores.

git clone https://github.com/vladimiracunadev-create/docker-labs.git

Levanta el panel de control

Es la puerta de entrada. Desde ahí se gobierna el resto sin tocar la terminal.

scripts\start-control-center.cmd › Windows ./scripts/start-control-center.sh › Linux y macOS

Abre localhost:9090 y elige qué encender

Cada tarjeta trae su estado, su consumo estimado y sus enlaces de entrada.

docker compose -f 04-redis-cache/docker-compose.yml up -d --build

¿Primera vez con Docker? La guía para principiantes parte desde cero. Si algo no levanta, solución de problemas cubre los fallos habituales.

Los 12 laboratorios

Cada uno se levanta y se baja por su cuenta con docker compose. La memoria indicada es la recomendada para que el stack arranque cómodo.

01-node-apiStarter

Node.js API

Microservicio REST basico para rutas HTTP y desarrollo backend con Node.js.

Node.js 18 + Express1.5 GB RAM:3000
02-php-lampStarter

PHP LAMP

Entorno clasico para aplicaciones administrativas con PHP, Apache y MariaDB.

PHP 8.1 + Apache + MariaDB3 GB RAM:8081:8082:3306
03-python-apiStarter

Python API

Servicio Flask sencillo para aprender APIs Dockerizadas con Python.

Python 3.10 + Flask1.5 GB RAM:5000
04-redis-cacheInfraestructura

Redis Cache API

API con Redis para demostrar cache, tiempo de respuesta y capas de performance.

Node.js 18 + Redis2 GB RAM:3001:6379
05-postgres-apiPlataforma

Inventory Core

Backend transaccional para clientes, productos y pedidos con PostgreSQL.

Python 3.12 + FastAPI + PostgreSQL3 GB RAM:8000:5432
06-nginx-proxyPlataforma

Platform Gateway

Gateway de entrada que unifica el acceso al panel, al core transaccional y al portal operativo.

Nginx1 GB RAM:8085
07-rabbitmq-messagingInfraestructura

RabbitMQ Messaging

Mensajeria asincrona con producer y consumer para jobs desacoplados.

Node.js 18 + RabbitMQ2.5 GB RAM:5672:15672
08-prometheus-grafanaInfraestructura

Prometheus + Grafana

Centro de observabilidad para metricas y dashboards operativos.

Prometheus + Grafana4 GB RAM:9091:3002
09-multi-service-appPlataforma

Operations Portal

Portal operativo que consolida datos del Inventory Core y agrega watchlist persistida.

HTML + Node.js + MongoDB4 GB RAM:8083:3003:27017
10-go-apiStarter

Go API

Servicio HTTP ligero para endpoints de alto rendimiento y utilidades rapidas.

Go 1.211 GB RAM:8084
11-elasticsearch-searchInfraestructura

Elasticsearch Search

Servicio de indexacion y busqueda full text para catalogos y conocimiento.

Python 3.12 + Elasticsearch6 GB RAM:8001:9200
12-jenkins-ciInfraestructura

Jenkins CI

Automatizacion de pipelines para builds, testing y despliegues repetibles.

Jenkins LTS4 GB RAM:8080:50000

Documentación

Todo el material del repositorio, publicado como páginas web: nada de esta portada te manda a un archivo .md crudo.

Índice completo: documentación técnica · guías del repositorio · fichas de los laboratorios

Para quien evalúa el repositorio