Skip to content

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages