장고:도커로 올리기

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2021년 2월 15일 (월) 22:43 판 (→‎개요)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
  7. 장고:팁

개요[편집 | 원본 편집]

도커. 가상화. 서로 다른 OS나 다른 환경에서 돌아가던 프로그램이 환경이 바뀌면 돌아가지 않곤 한다. 이를 위한 가상화.

가상머신과 다른 점은 하나의 컴퓨터에 자원을 지정할당하는 게 아닌, 호스트와 커널을 공유하는 반가상화라는 것. 간편하고 성능을 잘 끌어들인다는 점에서 경제적이다.


gunicorn[편집 | 원본 편집]

장고의 runserver 대신 gunicorn을 이용해 서비스를 해야한다.

과정 설명
runserver 대신 gunicorn 사용 CMD 부분의 runserver를 바꿔준다.

CMD ["gunicorn", "config경로.wsgi", "--bind", "0:8000"] 로 바꿔준다.

이미지를 만들기 위한 기본 설치 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 을 넣어주고...