서브젝트 요구사항
<일반 지침>
1. Virtual Machine에서 수행
2. 필요한 모든 파일은 srcs 폴더에 있어야 합니다.
3. 한 Makefile은 필수이며 디렉토리의 루트
4. 전체 응용 프로그램을 설정해야 합니다 (즉, Docker-compose.yml을 사용하여 Docker 이미지를 빌드해야 합니다.)
<멘데토리 파트>
1. 특정 규칙에 따라 다양한 서비스로 구성된 소규모 인프라를 설정하는 것으로 구성.
2. 가상 시스템에서 수행되어야 한다. docker-compose 를 사용해야함.
3. 각 도커 이미지는 해당 서비스와 이름이 동일해야 한다.
4. 각 서비스는 전용 컨테이너엣 실행되어야 한다.
5. 성능 문제를 위해 컨테이너는 알파인 리눅스의 궁극적인 안정버전 또는 데비안 버스터에서 제작 되어야한다.(둘 중 선택)
6. 서비스당 하나씩 도커 파일을 작성해야한다.
7. Docker 파일은 Makefile에 의해 Docker-compose.yml에서 호출되어야 합니다.
8. (= 당신 프로젝트의 도커 이미지를 직접 만들어야한다, 이미 만들어진 도커 이미지를 가져오는 것이 금지된다.)
9. 도커 허브(Alpine/Debian)는 8번 규칙엣 제외된다.
+) volume는 Docker(Linux에서는 /var/lib/docker/volume/)가 관리하는 Host File System의 일부에 Data가 저장됩니다.
<파란박스 1>
Docker 컨테이너가 가상 시스템이 아닙니다. 따라서 실행하려고 할 때 'tail-f' 등을 기반으로 한 해키 패치를 사용하지 않는 것이 좋습니다. 데몬의 작동 방식과 데몬을 사용하는 것이 좋은지에 대해 읽어 보십시오.
<빨간박스 1>
1. 물론 네트워크: 호스트 또는 --link or links: 사용은 금지됩니다. (using network: host or --link or links: is forbidden.)
2. network line은 docker-compose.yml 파일에 있어야 합니다.
3. 컨테이너를 무한 루프를 실행하는 명령으로 시작하면 안 됩니다.
4. Thus, this also applies to any command used as entrypoint, or used in entrypoint scripts.
(= 따라서 이것은 진입점으로 사용되거나 진입점 스크립트에서 사용되는 모든 명령에도 적용됩니다.) ->진입점??
5. 금지된 hacky patches : tail -f, bash, sleep infinity, while true.
<파란 박스2>
PID 1과 Docker 파일 작성에 대한 모범 사례를 읽어 보십시오.
<파란 박스3>
Docker를 사용하여 호스트 시스템의 /home/login/data 폴더에서 볼륨을 사용할 수 있습니다. 물론 로그인을 (the login with yours.)당신의 로그인으로 대체해야 합니다.
<빨간 박스>
1. 최신 태그 사용 못함.
2. 도커 파일 암후 없어야함.
3. 환경 변수 사용 필수
4. 환경 변수를 저장하려면 .env파일을 사용하는 것이 좋다. .env 파일은 srcs 디렉토리의 루트에 있어야 합니다.
5. NGINX 컨테이너는 TLSv1.2 또는 TLSv1.3 프로토콜을 사용하는 포트 443을 통해서만 인프라로 들어가는 유일한 진입점이어야 합니다.
<예상 다이어 그램 사진 참고>
<예상되는 디렉토리 구조의 예>