자유게시판

여러분의 의견을 자유롭게 알려주세요.

p610 docker-compose build 및 makemigrations 시 발생하는 operationalerror 해결 공유 (강의 도커로 서비스 시작하기)

2 years, 9 months ago

2KNG 2KNG

강의를 듣던 중 operationalerror가 발생하였는데

작가님 코맨트와 구글링으로 이부분 해결하여 블로그에 정리한 글 공유합니다.

모쪼록 이 방법으로 해결할 수 있길 바랍니다...

본문 - https://blog.naver.com/khkim1207/222638522508


환경

python 3.8.9

django 3.2

m1max macbook pro

macOS 12.2

서버환경

Amazon Linux 2

do it django + bootstrap 강의를 수강하던중 610p(강의 섹션18. 도커로 서비스 시작하기)에서

amazon linux2 환경에서 서버를 빌드하고, 마이그래이션 과정인

docker-compose exec web python manage.py makemigrations

중 문제가 발생하였다.

... database connection 'default': connection to server ... operationalerror: connection to server at SQL_HOST (ip), port SQL_PORT failed: fatal: role "POSTGRES_USER" does not exist

강의 내용대로 진행하였다면 아마

operationalerror: connection to server at "db" (ip주소), port 5432 fail ed: fatal: role "do_it_django_prod" does not exist

로 발생하였을 것이다.

대충보면 postgesql 환경파일(.env.prod, .env.prod.db)에 저장하였던 유저가 존재하지 않는다는 소리인데,

두 환경파일에 적은 ID,PW,DB가 정확하게 일치하고,

이틀동안 settings.py, Dockerfile, nignx.conf, docker-compose.yml 등등...

코드 비교기를 써가며 github 내용과 대조하면서 전부 다 뒤져봐도 오탈자를 찾을 수 없었다.

그러던 중 강의 커뮤니티와 구글링을 하다보니 해결되었고, 해결방법을 찾기어렵고 내용이 매우 생소하여 이렇게 글을 남긴다.

문제의 원인은 캐시파일에 의해 생긴 버그이며, aws 환경에서의 docker 로그 및 캐시 파일을 전부지우고 다시 진행하면 해결되었다.

방법은 아래와 같다.

docker-compose down -v
docker volume prune

저장소를 날릴거냐고 물어보면 y 를 입력하여 날려주자.

이 때 docker volume prune 은 데이터 베이스 내용을 전부 날리는 것이니,

중요한 내용이 있다면 이 명령어에 대해 다시 한번 알아보고 사용하길 바란다.

강의대로 진행하였다면 문제는 없다.

하지만 docker volume prune 만 진행하게 될 경우, 다시 똑같이 문제가 발생하기 떄문에

docker-compose down -v 로 서버 캐시를 먼저 한번 날려주니 해결이 되었다.

이 후 다시

sudo docker-compose up -d --build
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py migrate

순으로 진행하면 꿈에 그리던 웹사이트를 얻을 수 있다.

작성자는 이틀동안 원인을 몰라 참 고통스러웠기 때문에 이렇게 글을 남겨 혹시 시간 낭비하는 사람이 없기를 바란다.


sungyong
sungyong   2 years, 8 months ago

이 사이트에 오는 다른 분들께 큰 도움이 될 것 같습니다. 

좋은 글 남겨주셔서 감사합니다.     


Updated: March 29, 2022, 1:20 a.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A