42seoul/42seoul_

[inception 42] 인셉션 pdf 요구사항 한글 번역

mcdn 2022. 6. 18. 17:03
반응형

42 인셉션 pdf 한글 번역 

영어 원문

Introduction

This project aims to broaden your knowledge of system administration by using Docker. You will virtualize several Docker images, creating them in your new personal virtual machine.

General guidelines

  • This project need to be done on a Virtual Machine.
  • All the files required for the configuration of your project must be placed in a srcs
  • folder.
  • A Makefile is also required and must be located at the root of your directory. It must set up your entire application (i.e., it has to build the Docker images using docker-compose.yml).
  • This subject requires putting into practice concepts that, depending on your back- ground, you may not have learned yet. Therefore, we advise you not to hesitate to read a lot of documentation related to Docker usage, as well as anything else you will find helpful in order to complete this assignment.

Mandatory part

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.

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 Linux, or from Debian Buster. The choice is yours.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 for- bidden to pull ready-made Docker images, as well as using services such as DockerHub (Alpine/Debian being excluded from this rule).

You then have to set up:

  • 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. Your containers have to restart in case of a crash.

💡 A Docker container is not a virtual machine. Thus, it is not recommended to use any hacky patch based on ’tail -f’ and so forth when trying to run it. Read about how daemons work and whether it’s a good idea to use them or not

 

💡 Of course, using network: host or --link or links: is forbidden. The network line must be present in your docker-compose.yml file. Your containers musn’t be started with a command running an infinite loop. Thus, this also applies to any command used as entrypoint, or used in entrypoint scripts. The following are a few prohibited hacky patches: tail -f, bash, sleep infinity, while true.

Read about PID 1 and the best practices for writing Dockerfiles.

 

  • In your WordPress database, there must be two users, one of them being the ad- ministrator. The administrator’s username can’t contain admin/Admin or admin- istrator/Administrator (e.g., admin, administrator, Administrator, admin-123, and so forth).

To make things simpler, you have to configure your domain name so it points to your local IP address.This domain name must be login.42.fr. Again, you have to use your own login.For example, if your login is wil, wil.42.fr will redirect to the IP address pointing to wil’s website.

Your volumes will be available in the /home/login/data folder of the host machine using Docker. Of course, you have to replace the login with yours.

💡 The latest tag is prohibited.No password must be present in your Dockerfiles.It is mandatory to use environment variables.Also, it is strongly recommended to use a .env file to store environment variables. The .env file should be located at the root of the srcs directory.

Your NGINX container must be the only entrypoint into your infrastructure via the port 443 only, using the TLSv1.2 or TLSv1.3 protocol.

 

Bonus part

For this project, the bonus part is aimed to be simple.

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 (Yes, PHP
  • is excluded!). 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. During the defense, you will have to justify your choice.

💡 To complete the bonus part, you have the possibility to set up extra services. In this case, you may open more ports to suit your needs.

 

💡 The bonus part will only be assessed if the mandatory part is PERFECT. Perfect means the mandatory part has been integrally done and works without malfunctioning. If you have not passed ALL the mandatory requirements, your bonus part will not be evaluated at all.

 

Submission and peer-evaluation

Turn in your assignment in your Git repository as usual. Only the work inside your repository will be evaluated during the defense. Don’t hesitate to double check the names of your folders and files to ensure they are correct.

 

 

Introduction

  • 당신은 도커 이미지 여러장을 개인 가상머신에 만들 것입니다.

 

 

 

General guidelines

  • 가상 머신을 설치해서 진행해야 합니다. 
  • srcs 폴더 안에 모든 필요한 코드가 들어있어야 합니다.
  • Makefile은 root 위치에 있어야 합니다. (docker-compose.yml 등 이용해 도커 이미지 설치할 용도)
  • 알아야 하는 개념이 많으니까 천천히 정독하시길 바랍니다. 

 

Mandatory part

  • docker-compose 명령어를 사용해야 하며 가상머신에 실행해야 한다.
  • 각 도커 이미지는 서비스와 동일한 이름이어야 한다. (wordpress면 wordpress)
  • 각 서비스는 하나의 컨테이너에서 Run해야 하며, 각 컨테이너는 Alpine Linux 또는 Debian Buster 중 하나를 골라서 설치되어야 한다. (선택은 자유, 참고로 ft_server 때 보통 Debian Buster를 사용했다)
  • 각 서비스마다 dockerfile를 작성해야 한다.
  • 각 dockerfile은 docker-compose.yml에 불러져야 하므로, 이미 만들어진 도커 이미지를 외부에서 pull 하는 것은 절대 금지다. (ex, Dockerhub) (다만, alpine/debian 설치를 위해 pull 하는 것은 허용)
  • 그다음 설치해야 하는 요구사항은 다음과 같다.
    • 첫번째 컨테이너는 NGINX를 설치해야 한다. TLSv1.2 or TLSv1.3 포로토콜 만 허용한다.
    • 두번째 컨테이너는 WordPress + php-fpm만 설치. NGINX는 설치하지 않는다.
    • 세번째 컨테이너는 MariaDB 만 설치. NGINX는 설치하지 않는다
    • 한 volume은 wordpress database를
    • 또 다른 volume은 wordpress website files를 담는다
    • container 사이 네트워킹을 위해 docker-network를 만든다. 컨테이너가 crash하면 restart한다.

💡 don’t use ‘tail -f’ when using docker container. Read about daemons for more info.

💡 당연하지만 host 아니면 —link or links 는 금지된다. 네트워크 관련 내용은 docker-compose.yml 파일에 지정되어 있어야 한다.

컨테이너는 infinite loop (while true 같은) 에 run 되어서는 안 된다. 사실 어떤 명령어든 마찬가지.

따라서 다음 명령어를 발견하면 바로 종료해야 한다. tail -f, sleep infinity, while true

PID 1이나 docker file 관련 문서들을 읽어보라.

 

  • 워드프레스 데이터베이스에는 두 명의 유저가 존재해야 한다. 하나는 Administrator(관리자)다. 관리자의 일므은 admin/Admin/administrator/Administrator/admin-123 등 admin 글자가 들어가서는 안된다.
  • localhost ip를 본인 로그인에 맞게 접속할 수 있도록 사이트 주소를 바꿔야 한다. 도메인 이름은 login.42.fr로 정한다. 만약 본인 인트라 아이디가 selim이면 https://selim.42.fr로 들어가도 localhost를 접속할 수 있어야 한다.
  • Volumes들은 가상머신의 home/login/data 위치에 존재해야 한다. 마찬가지로 만약 인트라 아이디가 selim이면 경로는 home/selim/data가 된다.

 💡최근 태그들은 금지된다. Dockerfiles에는 패스워드가 존재해서는 안된다. 꼭 환경변수를 사용해야 한다.

.env 파일을 사용해서 환경변수를 관리하길 적극 권장한다. .env 파일은 srcs 폴더의 root에 존재해야 한다.

NGINX 컨테이너는 TLSv1.2 or TLSv1.3 프로토콜을 사용하며, 443 포트로만 접속할 수 있어야 한다.

 

아래는 pdf에 나와있는 결과물들 간의 관계를 나타내는 시스템 구조다.

 

 

 

아래는 요구하고 있는 문서 구조다.

 

 

Bonus part

보너스 파트에서는 추가적인 서비스를 만들 것을 요구한다.

각 서비스마다 Dockerfile이 필요하며, 각각 자기의 container에서 run하게 된다. 필요하다면 volume도 만든다.

 

보너스 리스트

  • Wordpress 웹사이트에서 캐시 관리를 위해 redis cache를 세팅하라
  • Wordpress 웹사이트의 volume을 가리키는 FTP server container를 만들라
  • PHP를 제외한 언어로 static website를 만들어봐라. 예를 들어 이력서를 보여주는 사이트
  • Adminer를 세팅하라
  • 당신이 생각하는 서비스를 만들어봐도 좋다. 단, 왜 그 서비스를 만들었는지 평가에서 디펜스를 할 수 있어야 한다.

💡 추가 서비스를 위해서 더 많은 포트를 사용할 수 있다.

💡 Mandatory part가 PERFECT해야지만 보너스를 채점해야 한다.

 

 

Submission and peer-evaluation

Git에 올라간 파일만 평가대상이 됩니다. 파일 및 폴더 이름과 위치가 정확한지 더블 체크하세요.

반응형