Skip to content

mchouikr/Inception

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Inception

Ce projet implémente une infrastructure complète avec Docker Compose comprenant :

  • NGINX (serveur web avec HTTPS/TLS uniquement)
  • WordPress (CMS avec PHP-FPM)
  • MariaDB (base de données)

Chaque service s'exécute dans son propre container Docker avec des images custom (pas d'images pré-configurées comme wordpress:latest).

🏗️ Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     NGINX       │    │   WordPress     │    │    MariaDB      │
│   (Port 443)    │◄──►│   (PHP-FPM)     │◄──►│   (Port 3306)   │
│   SSL/TLS       │    │   (Port 9000)   │    │   MySQL Socket  │
└─────────────────┘    └─────────────────┘    └─────────────────┘
  • NGINX : Point d'entrée unique (port 443), reverse proxy vers WordPress
  • WordPress : Application PHP avec PHP-FPM, communique avec MariaDB
  • MariaDB : Base de données, stockage persistant

📁 Structure du projet

├── Makefile                     # Commandes de gestion du projet
├── README.md                    # Documentation
└── srcs/
    ├── docker-compose.yml       # Orchestration des services
    ├── .env                     # Variables d'environnement (à créer)
    └── requirements/
        ├── nginx/
        │   ├── Dockerfile
        │   ├── conf/nginx.conf.template
        │   └── tools/setup_nginx.sh
        ├── wordpress/
        │   ├── Dockerfile
        │   ├── conf/
        │   │   ├── www.conf.template
        │   │   └── zz-custom.ini
        │   └── tools/setup_wordpress.sh
        └── mariadb/
            ├── Dockerfile
            ├── conf/
            │   ├── 10-client-socket.cnf
            │   └── 99-customServerConf.cnf
            ├── tools/
            │   ├── setup_mariadb.sh
            │   └── init.sql

🚀 Installation et utilisation

Prérequis

  • Docker & Docker Compose
  • make
  • Accès sudo (pour la gestion des volumes)

Configuration

  1. Créer le fichier .env dans ~/.inception/ :
# Domaine
DOMAIN_NAME=mchouikr.42.fr

# Base de données MariaDB
MYSQL_DATABASE=wordpress
MYSQL_USER=wpuser
MYSQL_PASSWORD=votre_mot_de_passe_db
MYSQL_ROOT_PASSWORD=votre_mot_de_passe_root

# WordPress
WORDPRESS_DB_HOST=mariadb
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wpuser
WORDPRESS_DB_PASSWORD=votre_mot_de_passe_db
WORDPRESS_URL=https://mchouikr.42.fr
WORDPRESS_TITLE="Mon Site WordPress"
WORDPRESS_ADMIN_USER=admin
WORDPRESS_ADMIN_PASSWORD=votre_mot_de_passe_admin
WORDPRESS_ADMIN_EMAIL=admin@mchouikr.42.fr
  1. Ajouter le domaine au fichier hosts (optionnel pour test local) :
echo "127.0.0.1 mchouikr.42.fr" | sudo tee -a /etc/hosts

Commandes Make

# Construction et démarrage complet
make all

# Démarrage sans reconstruction
make up

# Arrêt et suppression des containers
make down

# Arrêt simple (sans suppression)
make stop

# Reconstruction complète
make re

# Voir l'état des containers
make ps

# Voir les logs en temps réel
make logs

# Nettoyage Docker complet
make clean

# Nettoyage total (+ suppression volumes et .env)
make fclean

Accès aux services

🔧 Fonctionnalités techniques

NGINX

  • HTTPS uniquement (TLS v1.2/v1.3)
  • Certificat auto-signé généré automatiquement
  • Configuration sécurisée (headers de sécurité, etc.)
  • Reverse proxy vers WordPress (FastCGI)

WordPress

  • Installation automatique via WP-CLI
  • Configuration PHP-FPM optimisée
  • Création automatique d'un utilisateur admin
  • Connexion sécurisée à MariaDB

MariaDB

  • Initialisation sécurisée automatique
  • Suppression des comptes anonymes et base test
  • Création automatique de la base et utilisateur WordPress
  • Socket Unix + écoute réseau pour containers

🗃️ Volumes persistants

Les données sont stockées sur l'hôte dans :

  • /home/mchouikr42/data/wordpress/ → Fichiers WordPress
  • /home/mchouikr42/data/mariadb/ → Base de données MariaDB

🐛 Dépannage

Problèmes courants

  1. "Permission denied" sur les volumes :
sudo chown -R $USER:$USER /home/mchouikr42/data/
  1. Certificat SSL non reconnu :

    • Normal avec un certificat auto-signé
    • Accepter l'exception dans le navigateur
  2. Erreur de connexion à la DB :

    • Vérifier les variables d'environnement dans .env
    • Consulter les logs : make logs
  3. Port 443 déjà utilisé :

sudo lsof -i :443
# Arrêter le service qui utilise le port

Logs et debugging

# Logs de tous les services
make logs

# Logs d'un service spécifique
docker logs inception_nginx
docker logs inception_wordpress
docker logs inception_mariadb

# Accès shell dans un container
docker exec -it inception_nginx sh
docker exec -it inception_wordpress bash
docker exec -it inception_mariadb bash

📋 Conformité au sujet

  • ✅ Docker Compose uniquement
  • ✅ Images custom (pas d'images toutes faites)
  • ✅ Un container par service
  • ✅ HTTPS uniquement (TLS)
  • ✅ Volumes persistants
  • ✅ Réseau Docker custom
  • ✅ Variables d'environnement
  • ✅ Restart automatique des containers

👨‍💻 Auteur

mchouikr - Projet École 42

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published