Development repo for 42cursus' inception project
For further information about 42cursus and its projects, please refer to 42cursus repo.
42_Inception is a Docker-compose project designed to streamline the creation of a robust LEMP stack, comprising Linux, Nginx, MariaDB, and PHP, all orchestrated seamlessly with WordPress. With this project, each service gets its own container, all operating within a dedicated Docker network, showcasing Docker as the key technology that powers this deployment. Additionally, the whole service is hosted within a dedicated Virtual Machine (using GCP Compute Engine service).
For detailed information, refer to the subject of this project
The system architecture for the "Inception" project is a comprehensive setup designed for system administration practice using Docker. It comprises various components and services orchestrated within a virtual machine environment. Here's a concise overview of the architecture:
-
Virtual Machine (VM): The entire project takes place within a virtual machine, isolating and encapsulating the system components.
-
Dockerized Services: The architecture involves multiple Docker containers, each serving a specific purpose. These containers are responsible for running various services, including NGINX, WordPress with PHP-FPM, and MariaDB. The containers are created using custom Dockerfiles, and each service operates within its dedicated container.
-
Volume Management: Two volumes are utilized for data management. One volume holds the WordPress database, while the other stores the website files. These volumes ensure data persistence and separation.
-
Networking: A custom Docker network connects the containers, facilitating communication and interaction between services.
-
TLS Encryption: The NGINX container acts as the entry point into the infrastructure, serving via port 443. It provides TLSv1.2 or TLSv1.3 encryption, ensuring secure communication.
This architecture provides a robust environment for system administration learning, emphasizing Docker-based virtualization and the orchestration of multiple services within a virtual machine.
To run this project, follow these steps:
-
Create a Virtual Machine:
- Create a VM with a user named "ikgonzal," and ensure that the "/home/ikgonzal" folder is in place.
-
Edit Hosts File:
- Add the following line to your
/etc/hosts
file to set up the expected domain name:127.0.0.1 ikgonzal.42.fr
- Add the following line to your
-
Clone the Repository:
- Clone the 42_Inception repository to your VM by running the following command:
git clone https://github.com/iker-gonzalez/inception.git
- Clone the 42_Inception repository to your VM by running the following command:
-
Run the Project:
- Within the project folder, execute the following command:
make all
- Within the project folder, execute the following command:
-
Access the Website:
- Open your web browser and visit "https://ikgonzal.42.fr."
-
Certificate Warning:
- You may encounter a self-signed certificate warning; please proceed by ignoring this warning.