A high-performance, containerized web infrastructure built from scratch using Docker and Docker Compose. This project implements a fully managed environment with a reverse proxy, content management system, relational database, caching layer, and advanced management tools.
- 🛡️ Secure Gateway: Nginx reverse proxy with TLS v1.2/v1.3 SSL termination.
- 📰 Dynamic CMS: WordPress optimized with PHP-FPM.
- 🗃️ Persistent Storage: MariaDB database with dedicated volumes.
- ⚡ Performance Caching: Redis integration for WordPress object caching.
- 🛠️ Management Suite: Adminer for DB management and Portainer for Docker orchestration.
- 📂 File Access: FTP server providing direct access to the web root.
- 🧱 Bonus Static App: A lightweight, dedicated service for secondary content.
The system operates on a private inception-docker-network, ensuring isolated communication between services.
graph LR
A[Client] -->|HTTPS| B(Nginx)
subgraph "Inception Stack"
B -->|FastCGI| C(WordPress)
B -->|Proxy| D(Adminer)
B -->|Proxy| E(Portainer)
C -->|SQL| F[(MariaDB)]
C -->|Redis| G[(Redis)]
H(FTP) -.->|Volume| C
end
- Docker & Docker Compose
makeutility- Linux environment (preferred) or macOS
Copy the environment template and configure your credentials:
cp srcs/.env.example srcs/.env
# Edit srcs/.env with your preferred valuesmake upAdd the following to your /etc/hosts file (macOS/Linux):
127.0.0.1 zel-bouz.42.fr
127.0.0.1 adminer.zel-bouz.42.fr
127.0.0.1 docs.zel-bouz.42.fr
127.0.0.1 logs.zel-bouz.42.fr| Service | Protocol/Port | Access URL |
|---|---|---|
| Main Site | HTTPS (443) | https://zel-bouz.42.fr |
| Adminer | HTTPS (443) | https://adminer.zel-bouz.42.fr |
| Portainer | HTTPS (443) | https://logs.zel-bouz.42.fr |
| Static App | HTTPS (443) | https://docs.zel-bouz.42.fr |
| FTP | FTP (21) | ftp://zel-bouz.42.fr |
For more detailed information, please refer to the following guides:
- 🏗️ Architecture Details: Network flow and service interaction.
- 🐳 Service Overview: Configuration and purpose of each container.
- 🔧 Troubleshooting: Solutions to common setup issues.
This project is licensed under the MIT License - see the LICENSE file for details.
Developed as part of the 42 Network Curriculum.