멋사 aws 세션을 진행하는데 공통적인 문제가 생겼다.
바로 web container가 생성이 안되는 것...그래서 502 error가 뜨고 난리가 났다.
일단 github actions에서는 생성이 된다고 뜨는데...이유가 뭘까.
이전 오류를 생각해보면 오류는 보통
1. gunicorn 미설치
2. rds 및 ec2 주소 불일치
이정도인데...계속 확인해봤는데 제대로 돌아가지 않았다.
원인은 web container가 계속 exited 되는 것이였다!
나는 web container가 아예 생성되지 않은 줄 알고 sudo docker logs web을 아예 써보지 않았다.
근데 sudo docker ps -a 를 통해 실행중이지 않은 docker를 확인해보니 web container가 생성이 되어있었다!
다만 status가 docker exited (3) about a minute ago여서 -a 옵션을 뺀 상태에서는 볼 수 없던 것이였다.
따라서 web의 logs를 볼 수 있었고, 원인은 secret_key를 찾을 수 없는 것이라고 했다.
그래서 찾아보니... .env.prod의 DJANGO_SECRET_KEY에 오타가 있었다!!!!
진짜 바보같은 실수였다...😂😂😂
이부분만 수정하니까 잘됨..ㅎ
그래도 이번 기회로 docker 명령어를 잘알아야 겠다는 필요성을 느꼈다.
#docker 명령어 정리
- search : image 검색
- pull : image 다운로드
- images : image 목록 보기
- run : 컨테이너 생성과 동시에 컨테이너 접속
- ps : 실행중인 컨테이너 확인(image 확인)
- -a : 이전에 종료된 컨테이너도 확인
- --no-trunc : docker ps의 짤린 command id를 모두 표츌
- --format : 필요한 열만 추출. basic char syntax(\t, \n...) 사용 가능
- -n : 마지막으로 생성한 컨테이너를 숫자를 정해 추출
- -latest : 마지막으로 생성한 컨테이너 표시
- -q : 컨테이너 아이디만 표시
- -s : 컨테이너 사이즈 표
- start : 종료된 컨테이너 시작
- attach : 컨테이너 접속하기
- stop : 컨테이너 종료하기
- rm : 컨테이너 삭제. 컨테이너는 종료되어도 재실행하면 이전 상태를 유지하므로 완전히 삭제하고 싶으면 rm 사용
- exec it {컨테이너 id} : 실행되고 있는 컨테이너 접
- exit : 컨테이너 빠져나오기
이외에도 여러 명령어랑 옵션이 굉장히 많다...필요할 때 인터넷 찾아보기!
# 수정할 점
그동안 docker를 돌리고 나서 db에 내 model을 적용하기 위해 따로 migrate를 하는 과정이 필요했다.
entrypoint.prod.sh 파일에 migrate 명령어를 추가하면 그 과정을 생략해도 되지 않을까...생각했다.
그래서 이번에 오류를 수정하면서 그 부분도 추가를 해주었는데....잘 안됨.
오히려 오류가 뜬다...왤까?
#!/bin/sh
# config/docekr/entrypoint.prod.sh
python manage.py collectstatic --no-input
# python manage.py migrate
exec "$@"
명령어가 잘못된건가...?
그렇지만 이거랑 똑같이 배포했을때는 잘못된 부분은 못느꼈다.
혹시 mac과 window의 차이인가...? 주위에 mac쓰는 친구들은 migrate관련해서 따로 문제 없던데....
모르겠다. 이번에 배포 세션을 진행하면서 실험해봐야겠음.
'기타' 카테고리의 다른 글
[Sklearn] 분류 알고리즘 정리 (0) | 2023.09.25 |
---|---|
[Sklearn] 알고리즘 학습/예측 기본 (0) | 2023.09.25 |
[AWS] RDS 접속하기&DB 초기화 (0) | 2023.09.06 |
[AWS] EC2 서버 로그 확인하기 (0) | 2023.07.29 |
[AWS] S3 사용하기 (0) | 2023.07.19 |