[Django] docker-Django 접속하기
2023. 7. 11. 17:44
개발 환경
python3.8을 컨테이너로 올린 후 컨테이너 내부에 Django 설치해 사용
10100:8000으로 포트 포워딩
개발 서버 구동 후 접속
기본적으로 프로젝트를 생성 후 아래 명령어를 통해 개발 서버를 구동한다.
python manage.py runver
이에 대한 출력은 아래와 같다.
127.0.0.1:8000으로 접속하면 웹 사이트에 접속할 수 있다.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
April 02, 2022 - 10:13:10
Django version 4.0.3, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
나는 python을 컨테이너로 올리고 10100 포트를 사용해야하므로
localhost:10100으로 접속했다.
하지만 웹 사이트에 접속하니 정상 실행이 되지 않는다!

Django는 기본적으로 개발 서버를 실행할 때 localhost만을 수신 대상으로 설정한다.
보안상의 이유로 기본적으로 외부로부터의 요청을 수신하지 않도록 설계되었다.
따라서 포트 포워딩을 통해 내가 보낸 요청이 컨테이너까지는 전달이 됐지만
컨테이너 내부의 localhost(루프백 인터페이스)와 포트 포워딩된 호스트의 10100포트 간의
통신이 이루어지지 않은 것이다.
이를 해결하기 위해 Django의 runserver 명령을 실행할 때
IP주소를 0.0.0.0으로 지정하여 외부 인터페이스에서의 요청을 수신할 수 있도록 설정하면 된다.
python manage.py runserver 0.0.0.0:8000
위 명령어로 서버를 실행시키고
localhost:10100으로 접속 시 정상 작동 한다.
'WebFramework > [Django]' 카테고리의 다른 글
| [Django] APIView CRUD 예제 코드 (0) | 2023.08.23 |
|---|---|
| [Django] Serializer에 List 정의하기 (0) | 2023.08.23 |
| [Django] extends와 include (0) | 2023.07.26 |
| [Django] Class Based View, Funtion Based View (0) | 2023.07.24 |