• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

docker migrate시 migrate가 안되는 문제가 발생했습니다.

21.10.18 18:34 작성 조회수 105

1

컨테이너 기반으로 AWS/Azure 인프라에 장고/리액트 서비스 배포하기/PostgreSQL DB와 연동하고 도커를 통해 마이그레이션 수행하기 강의에서 문제가 생겨 질문 드립니다.

도커 셸까지 들어가서 showmigrations으로 X표시 없는것을 확인한뒤, migrate를 하고  셸에서 빠져나와서 
다시 셸을 실행하여 showmigrations를 하면 X표시가 사라져 있습니다. 

Azure연동이 된듯한데 혹시 다른 부분에서 문제가 있는걸까요?

 

추가적으로 시크릿키 처럼 유출되면 안되는 키들을 json파일에 저장한 뒤 사용했는데,
도커 이미지 빌드시에 json파일이 이미지에 같이 들어가는데 안전한 방법일까요?

답변 1

답변을 작성해보세요.

1

migrate 하셨을 때 정상적으로 마이그레이션이 되었나요? 혹시 migrate 시에 오류가 발생하신 것은 아닌가요? migrate 직후에 showmigrations 해보시면 어떤가요?

혹은 쉘을 구동하셨을 때, 장고가 바라보는 DB가 Azure의 PostgreSQL가 아니라, 로컬의 sqlite3 이실 수도 있으실 듯 합니다. 쉘 구동 후에 from django.conf import settings; 후에 settings.DATABASES 값은 어떠하신가요?

그리고 시크릿키는 컨테이너 이미지에는 포함시키지 않는 것이 좋습니다. 컨테이너를 생성해서 구동할 때, 환경변수 등의 방법으로 설정을 주입시켜주시는 것이 나은 방법입니다. 환경변수를 지정하는 방법은 컨테이너를 구동하는 환경마다 다릅니다.

Azure Web App for Containers에서는 애저 포털에서 지정할 수 있구요. 로컬에서는 docker run 시에 -e 옵션으로 지정하실 수 있습니다.

길준님의 프로필

길준

질문자

2021.10.18

migrate 하셨을 때 정상적으로 마이그레이션이 되었나요?
→ 정상작동 됐습니다.


혹시 migrate 시에 오류가 발생하신 것은 아닌가요? migrate 직후에 showmigrations 해보시면 어떤가요?

→ 마이그레이션이 안된 상태로 돌아갔습니다.

장고가 바라보는 DB가 Azure의 PostgreSQL가 아니라, 로컬의 sqlite3 이실 수도 있으실 듯 합니다 -> 이 문제였던거 같습니다!!!

답변 감사합니다!!!😀😀😀

혹시 도커 이미지 빌드시 psycopg2 or psycopg2-binary 를 다운 받을수 없다고 해서 

stackoverflow 검색 결과 RUN apt-get install -ylibpq-dev 명령어를 사용하라고 해서 해결이 되긴 했는데

간단하게 설명해주실수 있을까요?

같은 파이썬 팩키지라 할 지라도 윈도우/리눅스에 따라 바이너리 설치 혹은 소스 빌드를 하게 됩니다.

아래와 같은 오류가 뜨셨다면, psycopg2-binary 라이브러리가 이름은 바이너리이지만, 소스 빌드 설치를 시도한 것이구요. 소스 빌드를 위해 postgresql library 팩키지가 필요한데, 이 팩키지가 없어서 빌드오류가 발생한 것입니다.