Welcome to the Inception project repository! This project aims to set up a small infrastructure composed of different services under specific rules, all within a virtual machine using Docker Compose. Each service will run in a dedicated container, and for performance considerations, containers will be built either from the penultimate stable version of Alpine or Debian.
The infrastructure consists of the following services:
- NGINX with TLSv1.2 or TLSv1.3 only
- WordPress + php-fpm (without nginx)
- MariaDB
- Volumes for WordPress database and website files
- Docker network connecting the containers
To get started with this project, follow these steps:
- Clone this repository to your local machine.
- Navigate to the project directory.
- Run
make build
to build the Docker images. - Run
make up
to start the containers.
docker-compose.yml
: Compose file defining the services, volumes, and network.Makefile
: Automation script for building and managing Docker images.nginx/Dockerfile
: Dockerfile for NGINX service.wordpress/Dockerfile
: Dockerfile for WordPress + php-fpm service.mariadb/Dockerfile
: Dockerfile for MariaDB service.
- Each service has its own Dockerfile located in the corresponding service directory.
- Dockerfiles are written to build the services from the penultimate stable version of Alpine or Debian.
- The Dockerfiles are invoked in the
docker-compose.yml
through theMakefile
.
The Makefile includes the following commands:
build
: Builds Docker images for all services.up
: Starts containers using Docker Compose.down
: Stops and removes containers, networks, and volumes.
To use the Makefile, run commands like make build
or make up
in the project directory.
Bonus services have been added to enhance the project:
- Redis Cache: Set up a Redis cache for WordPress.
- FTP Server: Containerized FTP server linked to the WordPress website volume.
- Static Website: Create a simple static website in a language other than PHP.
- Adminer: Set up Adminer for database management.
- Custom Service: Add a service of your choice, justifying its usefulness during defense.
Feel free to explore and modify the project to suit your needs! If you encounter any issues or have suggestions, please create an issue in the repository. Happy coding!