Django 코드를 Docker container로 정상적으로 띄웠지만, local에서 열리지 않을 때
Dockerfile CMD에는 0.0.0.0으로, Django settings.py ALLOWED_HOSTS에 [‘0.0.0.0’]을 추가해주자
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.py
의 ALLOWED_HOSTS
가 []
빈 list로 되어있는데, 이것을 ALLOWED_HOSTS = ['0.0.0.0']
로 변경했다.
Django 문서에서는 ALLOWED_HOSTS
에 대해서 아래와 같은 설명이 있는데 여기에는 0.0.0.0
이 없다. 그래서 넣어주고 다시 도커 컨테이너를 띄우고, 0.0.0.0:8000
으로 접속했더니 잘 떴다!
When
DEBUG
isTrue
andALLOWED_HOSTS
is empty, the host is validated against['localhost', '127.0.0.1', '[::1]']
. // 여기에는 0.0.0.0이 없더라!