장고:도커로 올리기
장고! 웹 프레임워크! 틀:장고
개요[편집 | 원본 편집]
도커. 가상화. 서로 다른 OS나 다른 환경에서 돌아가던 프로그램이 환경이 바뀌면 돌아가지 않곤 한다. 이를 위한 가상화.
가상머신과 다른 점은 하나의 컴퓨터에 자원을 지정할당하는 게 아닌, 호스트와 커널을 공유하는 반가상화라는 것. 간편하고 성능을 잘 끌어들인다는 점에서 경제적이다.
gunicorn[편집 | 원본 편집]
장고의 runserver 대신 gunicorn을 이용해 서비스를 해야한다.
과정 | 설명 |
---|---|
runserver 대신 gunicorn 사용 | CMD 부분의 runserver를 바꿔준다.
|
이미지를 만들기 위한 기본 설치 | CMD라인 이전에 RUN pip install gunicorn 을 추가해준다.
|
이미지 만들기 | 이 파일로 이미지를 만든다. |
컨테이너 만들기 | 해당 포트로 접속하면 static이 빠진 웹페이지가 뜨면 정상. |
nginx[편집 | 원본 편집]
gunicorn을 웹서버에 연결해야 한다. 포트를 통해 nginx에 접속할 순 있지만, 이를 gunicorn과 연결해야 한다.
docker network[편집 | 원본 편집]
지정된 컨테이너 이름을 토대로 컨테이너들끼리 내용을 주고받을 수 있는 기능을 제공한다.
http://컨테이너이름:포트번호 로 지정하여 내용을 보내면 내용이 해당 컨테이너로 전달된다.
포테이너 좌측 메뉴 중, Network로 들어가면 네트워크를 만들 수 있다. 대충 생성하면 된다.
목표는 nginx를 gunicorn에 연결하는 것. (작정하고장고에선 네트워크를 먼저 만들고 진행한다.)네트워크가 만들어진 상태에서 컨테이너를 만들면 하단의 네트워크 탭에서 네트워크를 지정할 수 있다.(컨테이너를 만들고 난 후에도 할 수 있는 거 아닌감;;?)
설정파일 만들기[편집 | 원본 편집]
다음과 같이 설정한다.
worker_processes auto;
events {}
http {
server {
listen 80;
server_name example.org;
access_log /var/log/nginx/example.log;
location / {
proxy_pass http://컨테이너 이름:연결한 포트(일반적으로 8000);
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
proxy_pass 부분만 변경한다. 파일명.conf
로 저장.
이 설정파일을 FTP를 이용해 아무 디렉터리에 옮겨둔다.
이후 컨테이너 작성 시작.
과정 | 설명 |
---|---|
볼륨 설정 | volume mapping에서 container은 /etc/nginx/nginx.conf 를 넣어주고, host에선 위에서 만든 파일경로를 넣어준다.(컨테이너 안에 있는 파일과 host에서의 파일을 연결하는 것.) |
네트워크 설정 | 포트번호 알아서 지정, 네트워크를 지정한다. |
설정이 끝났으면 deploy.
해당 ip의 해당 포트로 들어가면 static이 빠진 웹페이지가 보인다.
정적파일 구동하기[편집 | 원본 편집]
파이썬 이미지 파일에 RUN python manage.py collectstatic 을 넣어주고...