Inception es un proyecto de la 42 Network que te introduce al mundo de la virtualización utilizando contenedores Docker. El objetivo es crear una pequeña infraestructura compuesta por diferentes servicios bajo reglas específicas.
┌─────────────────────────┐
│ Docker Network Bridge │
└───────────┬─────────────┘
│
┌──────────────────────┼──────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐
│ NGINX 🔒 │ │ WordPress 📝 │ │ MariaDB 💾 │
│ Contenedor │ │ Contenedor │ │ Contenedor │
└───────────────────┘ └───────────────────┘ └───────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
volumen volumen volumen
- Docker-compose crea una red virtual donde todos los contenedores pueden comunicarse
- Gestiona el ciclo de vida de los contenedores
- Configura los volúmenes persistentes
- Actúa como punto de entrada (puerta de acceso)
- Maneja conexiones TLS/SSL (¡solo TLSv1.2 o TLSv1.3!)
- Redirige el tráfico al contenedor de WordPress
- Puerto expuesto: 443 (HTTPS)
- Servidor web con PHP-FPM
- Aloja el sitio web
- Se conecta a la base de datos
- NO expone puertos directamente al host
- Sistema de gestión de base de datos
- Almacena datos de WordPress
- NO expone puertos directamente al host
- Los datos persisten en volúmenes
- WordPress: archivos del sitio web
- MariaDB: datos de la base de datos
- Los datos se mantienen incluso si los contenedores se reinician
- El usuario accede por HTTPS (puerto 443)
- NGINX recibe la petición y la encripta
- NGINX redirige al contenedor de WordPress
- WordPress procesa la petición
- WordPress consulta datos a MariaDB
- MariaDB devuelve los datos
- WordPress genera la página
- NGINX envía la respuesta al usuario
- Cada servicio debe ejecutarse en su propio contenedor dedicado
- Los contenedores deben construirse desde cero (Dockerfile personalizado)
- No se permiten imágenes preconstruidas excepto por Alpine/Debian
- No se permite Docker Desktop ni equivalentes
- Se requiere docker-compose.yml
- Los contenedores deben reiniciarse en caso de fallo
- Crea la red y los volúmenes primero
- Construye los Dockerfiles uno a uno
- Configura cada servicio cuidadosamente
- Prueba las conexiones entre contenedores
- Verifica que los datos persisten
# Crear y arrancar los contenedores
docker-compose up -d
# Ver contenedores en ejecución
docker ps
# Ver logs
docker logs [nombre-contenedor]
# Acceder a un contenedor
docker exec -it [nombre-contenedor] sh
# Detener todo
docker-compose down¡Y así es como funciona Inception! 🎉 Un proyecto fascinante que te enseña a organizar una infraestructura de servicios utilizando Docker de manera segura y eficiente.