/inception

Dockerfile and Docker-compose project

Primary LanguageDockerfile

Inception Project README

Overview

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

  • Version: 2.1

Objectives

  • 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.

Project Requirements

General Guidelines

  • 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 using docker-compose.yml).
  • Extensive reading and research on Docker and related technologies are advised.

Mandatory Part

  • 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 a Makefile.
  • 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.

Bonus Part

  • 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.

Submission and Evaluation

  • 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.

Directory Structure

An example of the expected directory structure is provided below:

$> ls -alR
.
├── Makefile
├── srcs
│   ├── docker-compose.yml
│   ├── .env
│   └── requirements
│       ├── mariadb
│       ├── nginx
│       └── wordpress

Project Structure Diagram

Project Structure

Security and Best Practices

  • 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.