본문 바로가기
프로젝트/Django - How Dimt?

Django poj.c E3) 프로젝트 서버 진척 내역 - 33일차

by Fola 2022. 5. 21.

Code E - Server 3번 글, 프로젝트 33일 차 (금)

 

 

33일 차 프로젝트 서버 진척 내역

 

 

1. 파이썬 패키지 

pip freeze > requirements.txt

pip install -r requirements.txt 

사용된 python 패키지 목록을 만들고 그 목록을 이용하여 서버 컨테이너에 패키지를 설치

 

 

 

 

 

2. gunicorn 설치

gunicorn은 웹 서버와 장고 애플리케이션을 연결해주는 인터페이스이며,

웹 페이지가 요청하는 동적 로직을 장고로부터 전달한다. 

 

서버 컨테이너 내부에서는 이제

python manage.py runserver 0.0.0.0:포트번호

대신

gunicorn --bind 0.0.0.0:포트번호 config.wsgi:application

명령어를 이용해 웹 애플리케이션을 실행한다.

 

장고 서버 대신 gunicorn을 사용하면서 css 파일과 같은 정적 파일이 더 이상 웹브라우저에 로드되지 않으며

이는 웹 서버 컨테이너에서 해결해야 하는 문제이다.

 

 

 

 

3. nginx 컨테이너

웹서버로 동작할 nginx 컨테이너를 생성

 

웹 서버의 설정 내용을 ngin.conf 파일로 작성하여

nginx 컨테이너 생성 시 /etc/nginx/nginx.conf 경로에 마운트 한다.

 

nginx는 실제 서비스 시 웹 브라우저가 접근하는 웹 서버이므로 외부 포트를 개방하여 컨테이너 내부의 80번 포트로 연결. 

 

 

 

 

4. 정적 페이지

정적 페이지는 nginx 웹 서버가

동적 페이지는 Django 컨테이너의 gunicorn 패키지가 담당한다.

 

Django 내의 정적 파일은 

python manage.py collectstatic 명령어를 통해 한 곳에 모을 수 있다.

settings.py의 STATIC_ROOT = 에 명시된 경로로 정적 파일이 모인다.

 

nginx 가 Django 컨테이너로부터 정적 페이지를 받아 클라이언트에게 제공할 수 있도록

공유 도커 볼륨을 만들어 특정 폴더들을 동기화하는 작업을 진행 중

 

 

 

 

 

 

해결하지 못한 문제점

Dockerfile을 통하여 유려하게 컨테이너를 생성하고 싶으나 잘 되지 않고 있다. 

 

docker build 단계에서는 모든 단계가 성공적으로 마무리되고 원하는 이미지가 생성된 것으로 보인다.

하지만 생성한 이미지로 컨테이너를 생성하게 되면

git clone를 통해 가져온 작업 디렉터리가 디렉터리만 생성되어 있을 뿐 안이 비어있다. 

 

원인을 찾을 수가 없다.

 

결국 python 이미지를 이용하여 컨테이너를 생성하고

컨테이너 내부의 터미널에서 모든 명령어를 수동으로 기입하며 작업 중이다.

컨테이너 생성 옵션 변경이 필요할 때는 도커 커밋으로 이미지를 다시 만들고 생성하는 방법을 사용.

 

이 도커파일의 어디가 문제인 것일까?

댓글