필자는 배포 경험이 그렇게 많지 않아서 배포에 대한 두려움이 많았었고 도커를 통해 배포를 해보자 라는
생각으로 열심히 구글 서치를 통해 배포에 성공하게 되었다.
이 경험을 정리 겸 공유 하고자 글을 쓴다. (이 글은 docker, mysql WorkBench 설치, 기존 Django 앱, 모델, url, view 등 각자 작성 되 있다는 가정 이다.)
1. Django 어플리케이션 만들기
첫번째 과정은 간단한 장고 어플리케이션을 만들어보겠다.
만약 이미 제작한 어플리케이션이 있으신 분은 이 단계를 건너 뛰어도 된다.
먼저 디렉토리를 하나 만들고 해당 프로젝트의 가상환경을 만들어주고 장고를 받아주자.



이렇게 까지 했다면 venv 폴더가 존재 하는 디렉토리에 Django 라는 폴더를 하나 만들어주자.
Django 폴더 안에 venv 폴더를 이동 시켜주자. (docker-compose파일을 Django 폴더와 동일한 루트에 생성 하기 위해!)
이후에 프로젝트를 생성 해주자

배포의 첫단계는 마무리 되었다.
이제는 각자의 app, model, urls 정의 해준다. (각자 프로젝트 마다 성격이 다 다르므로 생략!)
/프로젝트이름/settins.py 파일에 설정 몇줄만 추가 하겠다.
1.첫번째
2. 두 번쨰
장고와 mysql 데이터베이스르 연결하려면 mysqlclient이 필요하다. 다음과 같이 mysqlclient를 설치해주자


데이터베이스 부분을 주석처리 하고~

다음과 같이 정의 하였다~
위 코드에서 NAME: django 는 데이터베이스 이름을 의미한다. MySQL의 기본 포트는 3306 이다.
2. Mysql 설치 및 WorkBench 사용하기
https://reliablecho-programming.tistory.com/45
[django] 2. Mysql 연동과 테이블 생성 + 모델 만들기
장고의 개발 환경이 준비되었다면 이제 데이터베이스를 연동할 순서다. 장고를 설치하면 sqlite3이 자동으로 연동이 되지만 이번 프로젝트에서는 MySQL을 연동하는 작업을 한다. Mysql 연동과 테이
reliablecho-programming.tistory.com
이 링크를 통해 WorkBench를 설치하는 방식을 참 하기 바란다.
3. Nginx 설정 파일
자 이제 Django 폴더안에 nginx라는 폴더을 만들어주고 default.conf라는 파일을 하나 생성해주자.
default.conf는 Nginx의 동작을 을 설정하는 파일이다.
생성한 default.conf에 아래 내용을 붙여넣어주도록 하자.
설정에 대한 자세한 내용은 나중에 다루도록 하겠다.
만약 아직 Nginx 즉 WebServer가 어떤 일 하는지 모른다면 아래 포스팅을 참고하자.
[Web] WAS와 Web Server 차이
3줄 정리 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹서
cocook.tistory.com
static 파일 관련한 내용은 다음 포스팅때 언급 하겠다.
우선 위 사진과 같이 설정 파일을 만들어주자.
4. DockerFile 작성하기
Django 라는 폴더 밑에 DockerFile를 만들어주자.
위와 같이 파일내용을 채워주면 된다.
이제 위에 나온 start.sh를 만들어주자
start.sh 또한 같은 위치에 생성해주면 된다.
5.docker-compose.yml 작성하기
필자 기준으로 말하면 Django 폴더가 있는 디렉토리에 docker-compose.yml 파일을 생성한다.
6.배포 하기
먼저 깃허브에 repository를 만들어주고 깃허브에 올린 후 배포할 서버에서 pull 해주도록 하겠다.
배포할 서버는 AWS EC2를 사용할 것이고 EC2 인스턴스를 여는 과정과 github에 올리는 방법은 다른 분들의 글을 참고하길 바란다.
https://mine-it-record.tistory.com/115
[AWS]아마존 웹 서비스_EC2 인스턴스 시작하기
AWS의 EC2 인스턴스를 시작해보자 회원가입과 로그인 절차는 이미 다 해놨다는 가정하에 진행해도록 한다. EC2가 무엇일까...? 라는 설명에 대해서도 각설한다. AWS Management Console 위 URL로 들어가 로
mine-it-record.tistory.com
서버를 열었으면 아래 명령어들을 통해 docker, git 등을 받아주고 작성한 코드를 깃허브에서 당겨오자. 아래 깃허브에서 clone해서 사용해도 된다.
EC2 콘솔 창을 열어 아래와 같이 명령어를 입력한다. (참고로 필자는 우분투을 선택했다.)
마지막 명령어 sudo docker-compose up -d 으로 백그라운드로 실행시켜주자
실행 되었다면 공개주소로 이동하면 짠하고 배포 성공이다.
1. static 파일이 깨져 있을 것이다. 이건 나중에 포스팅으로 말씀 드릴 예정이다.
'Docker' 카테고리의 다른 글
Docker Swarm 활용한 무중단 배포 (0) | 2023.09.03 |
---|---|
Docker 활용하여 Mysql + Django + nginx + ssl + staticfile 배포 (0) | 2023.03.16 |
[Docker] 도커란 무엇인가?? 왜 써야 하는가? (0) | 2023.03.04 |