Skip to content

MiguelViHe/42-Inception

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🐳 42-Inception

Inception — Este proyecto se centra en la construcción desde cero de una infraestructura Docker completa para ejecutar un sitio web WordPress con todos sus servicios de backend de forma aislada y orquestada. Forma parte del Common Core de 42 Madrid.

📌 Qué es 42-Inception

Inception es un proyecto de DevOps / administración de sistemas que te enseña a:

🔹Construir imágenes Docker desde Dockerfiles propios.

🔹Orquestar múltiples servicios usando Docker Compose.

🔹Configurar redes, volúmenes persistentes y comunicación entre contenedores.

🔹Desplegar una web completa con componentes backend y administración.

📦 Servicios incluidos obligatorios para completar la parte base del proyecto.

🔹NGINX Servidor web / proxy inverso con TLS configurado

🔹WordPress + PHP-FPM CMS con FastCGI para servir PHP

🔹MariaDB Base de datos relacional para WordPress

📦 Servicios Bonus

🔹Redis Cache para mejorar rendimiento

🔹FTP Server para subir archivos

🔹Adminer: Interfaz web para gestionar bases de datos

🔹cAdvisor: Monitorización del uso de recursos de contenedores

🔹Web estática


📁 Estructura del proyecto

42-Inception/
├── secrets/ (no incluido desde el repositorio. Se incluirá desde una ubicación segura)
├── srcs/
│   ├── requiriments/
│   │   ├── bonus/
|   │   │   ├── adminer/
|   │   │   ├── cadvisor/
|   │   │   ├── ftp/
|   │   │   ├── redis/
|   │   │   └── static_website/
│   │   ├── mariadb/
|   │   │   ├── conf/
|   │   │   ├── tools/
|   │   │   ├── .dockerignore
|   │   │   └── Dockerfile
│   │   ├── nginx/
|   │   │   ├── conf/
|   │   │   ├── tools/
|   │   │   ├── .dockerignore
|   │   │   └── Dockerfile
│   │   └── wordpress/
|   │   │   ├── conf/
|   │   │   ├── tools/
|   │   │   ├── .dockerignore
|   │   │   └── Dockerfile
│   ├── .env
│   ├── docker-compone.yml
├── Makefile
└── README.md

Esta organización permite construir cada imagen y servicio de forma independiente, con Dockerfiles personalizados y configuraciones de red y volúmenes.


🛠️ Requisitos previos

✔️ Tener Docker y Docker Compose instalados (en Linux preferiblemente). ✔️ Usar una máquina o entorno donde puedas abrir puertos y generar certificados TLS.


🚀 Instalación y arranque

🔹Clonar el repositorio:

git clone https://github.com/MiguelViHe/42-Inception.git
cd 42-Inception
⚠️ WARNING: hacer antes de hacer make:

❕ Edita .env con tus dominios y credenciales.

❕ Copia tu carpeta secrets que contenga archivos .txt con las contraseñas de tus usuarios en la raíz del proyecto.

🔹Construir y arrancar todos los servicios:

make

Con esto:

🔹construye todas las imágenes desde los Dockerfiles en srcs/.

🔹crea los contenedores y red de servicios.

🔹levanta el stack completo.


📚 Volúmenes y redes El proyecto usa volúmenes Docker para mantener persistencia de:

🔹WordPress (archivos de sitio).

🔹MariaDB (base de datos).

🔹Redis (para mantener la cache de la RAM de una sesion a otra.

La red Docker interna conecta los servicios, de forma que solo NGINX expone puertos hacia el exterior mientras los demás servicios están aislados internamente.


🧪 Comandos útiles (Makefile)

🔹make — Construye y arranca todo.

🔹make setup — Contruye y da permisos a los volumenes en disco.

🔹make up — Arranca servicios sin reconstruir.

🔹make down — Detiene y elimina contenedores.

🔹make clean — Elimina contenedores, redes e imágenes creadas por 'up'

🔹make fclean — Elimina todo lo creado por el proyecto, incluidas imagenes, contenedores, redes y volumenes para que todo quede tal cual estaba antes de hacer make.

🔹make deepre — Reconstruye las imágenes y reinicia los contenedores sin usar caché.

🔹make logs — Muestra los logs de logs de los contenedores.

🔹make volumes — Muestra info sobre los volumenes creados.

🔹make status — Muestra info de los contenedores, los volumenes y de la red.


📌 Buenas prácticas

🔹 Certificados TLS: Genera certificados auto-firmados con OpenSSL para HTTPS.

🔹 Seguridad: Nunca expongas puertos innecesarios. Uso de secrets para no exponer información confidencial.

🔹 Optimización: Utiliza Redis para cachear sesiones o consultas frecuentes.

🔹 Monitorización: cAdvisor te ayuda a observar rendimiento y consumo.


🧠 Qué se aprende con este proyecto

🔹 Docker & Docker Compose

🔹 Construcción de imágenes personalizadas

🔹 Configuración de redes y servicios en contenedores

🔹 Volúmenes persistentes

🔹 Seguridad (TLS/SSL) y uso de Secrets

🔹 Monitorización de servicios en producción

🔹 Automatización con Makefile


About

proyecto Inception creado como parte del common core de 42Madrid

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors