우선 웹서버와 WAS, WSGI의 개념을 모른다면 위의 링크를 보고 오자.
기존에 django앱을 만들고 ec2를 활용하여 배포할 때는 docker 단일 컨테이너로 배포를 했다.
WAS, WSGI로 자주 쓰이는 nginx, gunicorn 없는데 왜 배포가 된건지 의문이 들었고, 구글링해보니 python manage.py runserver
은 django 내장 서버를
그런데, django 파일을 보면 아래와 같이 경고하고 있다.
HTTP server that implements the Python WSGI protocol (PEP 333, rev 1.21).
Based on wsgiref.simple_server which is part of the standard library since 2.5.
This is a simple server for use in testing or debugging Django apps. It hasn't
been reviewed for security issues. DON'T USE IT FOR PRODUCTION USE!
내장 서버는 간단한 테스트용일뿐 보안 이슈가 있으니 사용하지 말라는 것이다.
그래서 nginx, gunicorn을 도입해야 했고 django compose의 필요성을 느끼고 docker compose로 배포 방식을 바꿔야 했다.
이랬던 폴더 구조를
아래와 같이 변경했다.
즉, app과 같은 폴더에 nginx 폴더, docker-compose.yml
파일을 작성했다.