Django 코드를 Docker container로 정상적으로 띄웠지만, local에서 열리지 않을 때

Dockerfile CMD에는 0.0.0.0으로, Django settings.py ALLOWED_HOSTS에 [‘0.0.0.0’]을 추가해주자

FlyingSquirrel
3 min readJul 5, 2020
저한테 왜 이러세용..

Dockerfile을 작성했고, 이미지 빌드 잘 됐고, 컨테이너로 잘 띄웠고, 에러 없었는데, localhost:8000 127.0.0.1:8000 0.0.0.0:8000으로 접속하면 사이트에 연결할 수 없음이라고 떴다. 참고로 나는 django 서버도 8000포트로 열어주고, 호스트 서버도 8000포트로 열었었다.

// Dockerfile
FROM python:3.8

RUN apt-get update \
&& rm -rf /var/lib/apt/lists/*


COPY
. /app
WORKDIR /app

COPY requirements.txt ./
RUN
pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

처음에는 Dockerfile에 CMD ["python", "manage.py", "runserver", "127.0.0.1:8000"]로 작성했었다가 스택오버플로우 글 몇개를 보니까 0.0.0.0:8000으로 해야한다는 걸 봐서 바꿔줬다. 도커를 이용해서 장고 서버를 열어줄 때는 127.0.0.1 말고, 0.0.0.0으로 해줘야한다는 것 같았다.

그래도 도커 컨테이너를 띄웠는데 로컬이 열리지 않아서, 좀 더 찾아보았는데, Django setting.pyALLOWED_HOSTS[] 빈 list로 되어있는데, 이것을 ALLOWED_HOSTS = ['0.0.0.0']로 변경했다.

Django 문서에서는 ALLOWED_HOSTS에 대해서 아래와 같은 설명이 있는데 여기에는 0.0.0.0이 없다. 그래서 넣어주고 다시 도커 컨테이너를 띄우고, 0.0.0.0:8000으로 접속했더니 잘 떴다!

When DEBUG is True and ALLOWED_HOSTS is empty, the host is validated against ['localhost', '127.0.0.1', '[::1]']. // 여기에는 0.0.0.0이 없더라!

--

--

FlyingSquirrel
FlyingSquirrel

Written by FlyingSquirrel

감성이 말랑말랑한 개발자입니다.

No responses yet