This project aims to broaden your knowledge of system administration through the use of Docker technology. You will virtualize several Docker images by creating them in your new personal virtual machine.
Inception is a multi-container Docker application that sets up a complete WordPress website with a reverse proxy, database, and bonus services for enhanced functionality.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Nginx β β WordPress β β MariaDB β
β (Port 443) βββββΊβ (Port 9000) βββββΊβ (Port 3306) β
β SSL/TLS β β PHP-FPM β β Database β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Redis β
β (Port 6379) β
β Cache β
βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β FTP Server β
β (Port 21) β
β File Access β
βββββββββββββββββββ
- WordPress - Content Management System
- MariaDB - Database server
- Nginx - Reverse proxy with SSL/TLS
- Redis - Object cache for WordPress performance
- FTP Server - File access to WordPress volume
- Adminer - Web-based database administration tool
- Static Website - Modern showcase site in HTML/CSS/JavaScript
- Minecraft Server - Java Edition 1.20.4 game server
-
Clone the repository
git clone https://github.com/abestaev/inception.git cd inception -
Create environment file
cp srcs/.env.example srcs/.env # Edit srcs/.env with your configuration -
Create secrets directory
mkdir -p srcs/secrets # Add your password files: # - mysql_password # - mysql_root_password # - wordpress_admin_password # - redis_password # - ftp_password
-
Start the services
cd srcs docker compose up --build -d -
Access the website
- Website: https://localhost or https://albestae.42.fr
- Admin: https://albestae.42.fr/wp-admin
- FTP: localhost:21 (user: ftpuser)
- Database Admin: http://localhost:8080
- Static Showcase: http://localhost:8081
- Minecraft Server: localhost:25565
Edit srcs/.env to customize:
- Domain names
- Database credentials
- Admin credentials
- Ports
Place password files in srcs/secrets/:
mysql_password- MariaDB user passwordmysql_root_password- MariaDB root passwordwordpress_admin_password- WordPress admin passwordredis_password- Redis passwordftp_password- FTP user password
inception/
βββ srcs/
β βββ docker-compose.yml
β βββ .env
β βββ secrets/
β βββ requirements/
β βββ mariadb/ # Database service
β βββ nginx/ # Reverse proxy
β βββ wordpress/ # CMS
β βββ bonus/ # Bonus services
β βββ redis/ # Cache service
β βββ ftp/ # FTP server
β βββ README.md # Bonus services documentation
βββ README.md
- SSL/TLS encryption with self-signed certificates
- Secrets management through Docker secrets
- Isolated containers with custom networks
- No sensitive data in version control (.gitignore configured)
- WordPress with PHP 8.2 and FPM
- MariaDB database with custom configuration
- Nginx reverse proxy with SSL termination
- Redis object cache for performance
- FTP server for file management
- Docker Compose orchestration
- Persistent volumes for data storage
- URL: https://albestae.42.fr/wp-admin
- Username: manager
- Password: (from secrets/wordpress_admin_password)
- Host: localhost
- Port: 21
- Username: ftpuser
- Password: (from secrets/ftp_password)
- Host: localhost
- Port: 6379
- Password: (from secrets/redis_password)
- URL: http://localhost:8080
- System: MySQL
- Server: mariadb
- Username: wordpress_user
- Password: (from secrets/mysql_password)
- Database: wordpress
- URL: http://localhost:8081
- Type: Modern responsive website
- Technologies: HTML5, CSS3, JavaScript ES6
- Features: Animations, interactive elements, mobile-friendly
- Content: Project showcase and documentation
- Address: localhost:25565
- Version: Java Edition 1.20.4
- Game Mode: Survival
- Difficulty: Normal
- Max Players: 20
- Features: PvP enabled, Nether access, command blocks
- Memory: 2GB allocated
docker compose up --build -d [service_name]docker compose logs [service_name]docker compose down- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is part of the 42 School curriculum.