The Inception project is a comprehensive exercise in system administration, with a primary focus on utilizing Docker for virtualization. The goal is to create a multifaceted infrastructure using Docker containers, each hosting a specific service. This exercise challenges participants to apply their system administration skills in a practical, real-world scenario.
- Version: 2.1
- To deepen understanding of system administration concepts.
- To gain hands-on experience in using Docker for virtualization.
- To set up a small-scale infrastructure with various services.
- The project must be executed on a Virtual Machine.
- All configuration files should be placed in a
srcs
folder. - A
Makefile
is required at the root of the directory to set up the application (i.e., build Docker images usingdocker-compose.yml
). - Extensive reading and research on Docker and related technologies are advised.
- Set up an infrastructure composed of services under specific rules, entirely in a virtual machine using docker-compose.
- Use either the penultimate stable version of Alpine or Debian to build containers.
- Create custom Dockerfiles for each service, and integrate them into
docker-compose.yml
using aMakefile
. - Services to be set up include NGINX (with TLSv1.2 or TLSv1.3), WordPress + php-fpm, MariaDB, and appropriate volumes and docker-network for connectivity.
- Specific rules around the use of network configurations and containers.
- The bonus part includes setting up additional services like Redis cache for WordPress, a FTP server, a static website, Adminer, and a service of personal choice.
- Projects must be submitted through a Git repository.
- Only the work within the repository will be evaluated.
- Ensure correct naming conventions for folders and files.
An example of the expected directory structure is provided below:
$> ls -alR
.
├── Makefile
├── srcs
│ ├── docker-compose.yml
│ ├── .env
│ └── requirements
│ ├── mariadb
│ ├── nginx
│ └── wordpress
- Credentials, API keys, and environment variables must be stored locally in a
.env
file and ignored by Git. - Avoid using publicly stored credentials to prevent project failure.