무슨 프로젝트가 오류밖에 안나온다.
한 서버에 2개를 배포하려니까 더 문제가 되는거같다.
하나하나 해결하기 위해 우선 swagger가 안들어가지는 문제를 해결하려고한다.
백엔드 주소로 들어갓는데
/swagger에 접속을 하니 정적파일이 안뜬다.
/admin에 들어가니 거기도 정적파일이 안뜬다.
/portainer에 들어가니 이건 외부 프로그램이라 그런지 잘뜬다.
그렇다면 어디 정적파일이 문제인거같은데..
swagger/ 200 document swagger 2.8 kB 13밀리초
swagger 200 document / 리디렉션 기타 (디스크 캐시) 대기 중
swagger-ui.css 404 stylesheet swagger/:18 155 B 11밀리초
swagger-ui-bundle.js 404 script swagger/:41 155 B 11밀리초
swagger-ui-standalone-preset.js 404 script swagger/:42 155 B 15밀리초
insQ.min.js 404 script swagger/:43 155 B 15밀리초
immutable.min.js 404 script swagger/:44 155 B 15밀리초
swagger-ui-init.js 404 script swagger/:45 155 B 23밀리초
contentscript.js 200 script inject.js:82 4.9 kB 10밀리초
style.css 404 stylesheet swagger/:17 155 B 13밀리초
contentscript.js 200 script inject.js:82 4.8 kB 9밀리초
이런 문제가 보였는데
딱봐도 정적파일이 어디 있거나 없거나 하는 상황에 사이트에 접속하면 이 정적파일로 안내가 안되는 듯 했다.
그렇다면 확인할 문제는 몇개 있다.
정적파일은 있는가?
정적파일은 어디에 있는가?
정적파일이 잘 마운트 되고 있는가?
이렇게 확인을 하면 될 것 같았다.
joo@liv:~$ docker exec -it liv_pro ls /app/staticfiles/drf-yasg
README insQ.js redoc-init.js swagger-ui-dist
immutable.js insQ.min.js redoc-old swagger-ui-init.js
immutable.min.js redoc style.css
있다. 우선 app에는 있다.
위치를 보면 app/staticfiles에 있다. collectstatic이 잘된거같다.
이 부분을 확인하려고 어떻게 할지 고민하다가 gamebox에서 파일을 마운트해서 배포하단걸 기억하고
nginx에 파일이 있는지 확인해보았다.
joo@livdocker exec -it ng01 ls /app/staticfiles/drf-yasgyasg
ls: /app/staticfiles/drf-yasg: No such file or directory
파일이 없다
맙소사
그러면 잘 컨테이너화 되서 nginx에 저 파일로 마운트를 시도했으나 그게 실패한거같다/
당연히 docker compose로 가보자.
- ./nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt:/etc/letsencrypt
- ./certbot:/var/www/certbot # 인증서 발급을 위한 볼륨 추가
- static_volume:/app/static
- media_volume:/app/media
보면 static 파일로 마운트가 되고 있었다.
- ./pyproject.toml:/app/pyproject.toml:ro
- ./poetry.lock:/app/poetry.lock:ro
- ./django:/app/django
- /home/joo/back-end-coffee/django/logs:/home/joo/back-end-coffee/django/logs
- static_volume:/app/django/static
- media_volume:/app/django/media
web에서도 보면 장고 스태틱 파일로 마운트 중이다.
이부분이 debug true일땐 문제가 없었지만 false일때 문제가 된 부분인듯하다.
이부분을 전부 staticfile로 수정해주니 문제가 해결되었다.