This project has been created as part of the 42 curriculum by shassoun.
This project is Inception, a system administration and DevOps project from the 42 curriculum. Its goal is to design and deploy a complete and secure web infrastructure using Docker and Docker Compose.
The stack is composed of multiple services running in isolated containers:
- Nginx as a web server and reverse proxy (HTTPS only)
- WordPress with PHP-FPM for dynamic content
- MariaDB as the database server
Each service runs in its own container, connected through a Docker network, following best practices in containerization, security, and data persistence.
- Docker
- Docker Compose
- Make
makeThis command builds all Docker images and starts the containers.
To stop the project:
make downTo clean everything (containers, images, networks, and volumes not in use or associated with stopped containers):
make cleanDocker is used to ensure:
- Service isolation
- Reproducible environments
- Easy deployment and scalability
- Virtual Machines emulate an entire operating system and are heavy in resources.
- Docker containers share the host kernel, start faster, and consume fewer resources.
- Environment variables are used for non-sensitive configuration.
- Docker network allows secure communication between containers using service names.
- Host network exposes services directly on the host, which is less secure and not used here.
- Docker volumes are used for persistent data (database, WordPress files).
- They are managed by Docker and safer than bind mounts, which depend on host paths.
- Docker documentation
- Nginx documentation
- WordPress documentation
- MariaDB documentation
AI was used as a learning assistant to:
- Understand Docker, Nginx, and WordPress interactions
- Clarify configuration files and error messages
- Improve documentation clarity
AI was not used to generate ready-made solutions without understanding.