Django에서 기본적으로 제공하는 Sqlite3는 간편하지만 조금이라도 규모가 커지면 보통의 성능을 기대할 수 없게된다. 그렇기 때문에 MySQL이나 Oracle, PostgreSQL MariaDB등을 이용하게 된다. 이번 블로그 프로젝트에는 PostgreSQL을 사용하기로 한다.
보통의 경우라면 로컬에 설치하고, 서버에도 설치해야 하지만 Docker가 있다면 단순하게 설정하는 것만으로 사용할 수 있게된다.
● PostgreSQL 사용 설정
Docker-compose.yml 수정
DB만 담당하는 컨테이너를 실행하여 PostgreSQL을 실행한다. web이라는 컨테이너에서 Django가 실행되고 db라는 컨테이너에서 PostgreSQL을 실행 하도록한다.
settings.py와 .env.dev 파일 수정
settings.py에는 어떤 SQL을 사용할지 정의되어 있다. USER, PASSWORD, HOST, PORT는 PostgreSQL을 관리하는데 필요한 내용이다.
다음으로 settings.py에서 활용할 수 있도록 .env.dev 파일을 수정한다.
cmber 터미널로 docker-compose build로 이미지를 빌드하면 다음과 같은 문구가 뜨는데 이는 오타나 들여쓰기 문제로 생긴 오류이니 코드를 수정하여 해결한다. 특히 아래에 출력된 문구 중 environment 주위를 잘 살펴본다.
docker-compose up으로 컨테이너를 실행하기 전에 pip install psycopg2 설치로 파이썬에서 PostgreSQL을 실행 시킬수 있도록 한 후 pip freeze > requirements.txt 명령어로 Docker에서 build시 psycopg2를 반영할 수 있도록 한다.
docker-compose up을 하였으나 다음과 같은 오류가 발생하였다. 분명히 docker-compose.yml과 .env.dev에서 user와 password 부분이 일치함에도 불구하고 오류가 나게되어 해결책을 찾던중 docker-compose down -v로 볼륨을 제거하고 다시 실행하는 방법을 찾았다.
PostgreSQL DB migration
DB부분이 수정되었으니 migrate 하여 변경사항을 적용시킨다.
더이상 sqlite3를 사용하지 않고 PostgreSQL DB에서 새로 시작하기 때문에 기존의 글들이 없어지게 되었다.
관리자 계정과 포스트 생성
docker-compose 명령어를 이용해 관리자 계정을 생성한다. 너무 짧으면 비밀번효 유효성 검사에 통과하지 못했는데 계속 진행하겠는지 묻는데 열심히 만든 블로그의 보안을 위해서라도 정성껏 비밀번호를 설정해 준다.
생성한 계정으로 로그인 하고 테스트용 포스트를 생성하여 잘 작동하는지 확인한다.
'Backend > Django + Bootstrap 개발 일지' 카테고리의 다른 글
36. 아마존 웹 서비스로 배포! (0) | 2022.10.23 |
---|---|
35.Gunicorn, Nginx (0) | 2022.10.23 |
33. Docker (0) | 2022.10.18 |
32. 자기소개 페이지 (0) | 2022.10.15 |
31. 대문 페이지 (0) | 2022.10.13 |