Django

Jenkins로 Django를 docker container 실행 시 접속 안됨

하눤석 2023. 3. 28. 17:40
728x90


문제상황

CI/CD 아키텍쳐

 

위와 같은 아키텍쳐로 Jenkins에서 Pipeline을 통해 Django를 Dockerize 하는 상황에 발생한 문제입니다

.

 

pipeline에서 정상적으로 Docker Container가 실행되는 것을 확인했고, ec2에서 docker ps 명령어를 통해 컨테이너가 정상적으로 실행되고 있는 것을 확인했습니다.

 

docker ps

//CONTAINER ID   IMAGE           COMMAND                 CREATED       STATUS       PORTS
//0bd7562d8edf   image_name      "python manage.py ru…"   2 hours ago   Up 2 hours   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp

 

그러나 ec2의 퍼블릭ip에 8000번 port로 접근했을 때, 다음과 같은 문제가 발생했습니다.

문제상황

분명  Django가 정상적으로 실행되는데 왜 접속이 안되는 것일까요? 

 


해결방법

 

1. Django의 ALLOWED_HOSTS설정

 

Django의 Settings.py에 가면 ALLOWED_HOSTS라는 항목이 있습니다. 이는 Django를 외부에서 접근할 수 있는 권한을 설정해주는 것입니다. host를 특정하여 직접 입력하거나, 모든 사용자에 대해 접속을 허용하기 위해 '*'를 입력해주면 됩니다.

ALLOWED_HOSTS = ['*'] 

또는

ALLOWED_HOSTS = ['특정 HOST IP']

 

 

 

2. 컨테이너 로그 확인

 

저의 경우 이 방법으로 문제를 해결했습니다. 

ec2 환경에서 docker logs "컨테이너 ID" 명령어를 통해 백그라운드에서 실행되고 있는 Django가 정상적으로 실행되고 있는지 확인해봤는데 아니나 다를까 로컬에서는 정상적으로 실행되던 Django가 실행되지 않고 있었습니다.

 

docker logs "컨테이너 ID"

 

원인은 requirements.txt에 누락된 모듈이 있어서 import에서 컴파일 에러가 났던 것이었습니다.

 

 

 

320x100