gunicorn이 설치된 Django container와 Nginx container를 연결할 것이다.
Nginx container에서 django container로 요청을 보낼때는 어떻게 보내야하는가? IP Address 로 요청을 보내야할지, DOMAIN으로 요청을 보내야할지 모른다. 이걸 해결해줄 도구가 Docker Network이다.
Docker Network
django container의 container name은 'django_container_gunicorn'
Nginx의 container name은 'nginx' 였다.
Network안에서는 container name자체가 도메인이된다.
이런식으로 두 컨테이너의 연결을 만들것이다.
1. Network 생성
우선 이전에 임시로 만들었던 컨테이너들을 삭제하였다. (portainer 제외)
> create network
name만 설정하여 그대로 deploy한다. (nginx-django 로 하였다.)
2. container 생성
port는 nginx에서 먼저 받은다음에 django로 넘겨줄거기 때문에 django container에서 외부포트를 연결시켜줄 필요가 없다.
network를 앞서만든 네트워크로 설정해준다.
> deploy
3. nginx.conf create
worker_processes auto;
events {
}
http {
server {
listen 80;
include mime.types;
location /static/ {
alias /data/static/;
}
location /media/ {
alias /data/media/;
}
location / {
proxy_pass http://django_container_gunicorn:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
4. nginx.conf 파일을 가상서버에 올리기
https://filezilla-project.org/
1) FileZilla를 활용. 호스트, 사용자명, 비밀번호, 포트:22를 입력해 연결한다. > 받아온 가상서버 안에 파일들이 나타난다.
2) home 폴더로 들어가 새 디렉터리 django_course 생성. 그리고 내부에 왼쪽 로컬에서 만든 nginx.conf 를 django_course에 넣어준다.
5. nginx container 생성
> network는 nginx-django 연결.
> Volumes 설정
container : /etc/nginx/nginx.conf (bind)
host : /home/django_course/nginx.conf
> deploy
'웹 프로그래밍' 카테고리의 다른 글
[배포해보기 (10)] collectstatic; static file 받지 못하는 문제의 해결 (0) | 2021.06.29 |
---|---|
[배포해보기 (9)] Static 의 이해 (0) | 2021.06.29 |
[배포해보기 (7)] Gunicorn (0) | 2021.06.27 |
[배포해보기 (6)] Django container 생성 (0) | 2021.06.27 |
[배포해보기 (4)] Port의 이해, Nginx 컨테이너 생성 (0) | 2021.06.27 |