Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mguardia10/42cursus_inception

This project aims to broaden your knowledge of System Administration by using Docker.
https://github.com/mguardia10/42cursus_inception

42school bash-scripting docker docker-compose inception-42

Last synced: 2 days ago
JSON representation

This project aims to broaden your knowledge of System Administration by using Docker.

Awesome Lists containing this project

README

        

# 42cursus_inception
This project aims to broaden your knowledge of System Administration by using Docker.

This project consists in having you set up a small infrastructure composed of different
services under specific rules. The whole project has to be done in a virtual machine. You
have to use docker compose. You can see the subject [**HERE.**](https://github.com/MGuardia10/42cursus/blob/main/subjects/en/inception_subject_en.pdf)

![Docker](https://img.shields.io/badge/Docker-a?style=for-the-badge&logo=docker&color=grey)
![Bash](https://img.shields.io/badge/Bash-a?style=for-the-badge&logo=GNUBash&color=grey)
![Makefile](https://img.shields.io/badge/Makefile-a?style=for-the-badge&logo=monster&logoColor=orange&color=grey)

Rules to follow:



  • Each Docker image must have the same name as its corresponding service.

  • Each service has to run in a dedicated container.

  • For performance matters, the containers must be built either from the penultimate stable version of Alpine or Debian.

  • You also have to write your own Dockerfiles, one per service. The Dockerfiles must be called in your docker-compose.yml by your Makefile.

  • It means you have to build yourself the Docker images of your project. It is then forbidden to pull ready-made Docker images, as well as using services such as DockerHub (Alpine/Debian being excluded from this rule).

Diagram of the expected result for mandatory part:



    diagram of expected result

Expected directory structure:



    Expected directory structure

## Mandatory part

List of services and volumes to set up for the mandatory part:
- A Docker container that contains **NGINX** with TLSv1.2 or TLSv1.3 only.
- A Docker container that contains **WordPress + php-fpm** (it must be installed and configured) only without nginx.
- A Docker container that contains **MariaDB** only without nginx.
- A volume that contains your **WordPress database**.
- A second volume that contains your **WordPress website** files.
- A **docker-network** that establishes the connection between your containers.

## Bonus Part
A Dockerfile must be written for each extra service. Thus, each one of them will run inside its own container and will have, if necessary, its dedicated volume.

Bonus list:
- Set up **redis cache** for your WordPress website in order to properly manage the
cache.
- Set up a **FTP server** container pointing to the volume of your WordPress website.
- Create a simple **static website** in the language of your choice except PHP. For example, a showcase site or a site for presenting your resume.
- Set up **Adminer**.
- Set up a service of your choice that you think is useful. I am using **Grafana**.

## Disclaimer
> At [42School](https://en.wikipedia.org/wiki/42_(school)), almost every project must be written in accordance to the [Norm](https://github.com/MGuardia10/42cursus/blob/main/subjects/en/norm_en.pdf), the school's coding standard. As a result, the implementation of certain parts may appear strange and for sure had room for improvement.