본문 바로가기

Python/Django

[Docker+Django] Dockerfile로 Docker Django 이미지 만들기 / django 2.0 버전 이상

실습 저장소

https://github.com/JisunParkRea/dockerdjango-sample


django 공식 이미지의 문제점

Django의 official docker image는 Docker hub에 올려져있다.

https://hub.docker.com/_/django

그러나, 문제는 2016-12-31 이후로 지원이 끊겼다는 것이다.

 

즉, django의 1.x버전까지만 지원을 하고,

django 2.0 버전 이상을 사용하기 위해서는 직접 이미지를 만들어야할 필요성이 생겼다.


Docker Django 이미지 만들기

나의 실습 환경

Windows 10 Home

Docker Toolbox

Docker Quickstart Terminal

기본 Django 프로젝트 만들기

$ mkdir django_workspace  # 만약 permission denied 에러가 난다면, 관리자 권한으로 터미널 실행
$ cd django_workspace
$ pip install virtualenv
$ virtualenv venv
$ source venv/scripts/activate  # 가상환경
(venv)$ pip install django
(venv)$ django-admin startproject dockerdjango
(venv)$ cd dockerdjango
(venv)$ python manage.py runserver

localhost:8000에서 잘 돌아가는지 확인하고 ctrl+c를 눌러 종료하자

 

그리고 requirements.txt를 만들고 settings.py에 ALLOWED_HOST에 로컬 호스트 ip와 가상머신 ip를 추가해주자

(venv)$ pip freeze > requirements.txt
(venv)$ docker-machine ip default  # 도커 가상머신 ip주소 확인
# dockerdjango/settings.py

ALLOWED_HOSTS = [
    '127.0.0.1',
    '<YOUR_VM_IP_ADDRESS>',
]

Dockerfile 만들기

django 공식 이미지는 Dockerfile에 대해 다음과 같이 정의했다

 

 

나는 파이썬 latest 버전을 사용할 것이기에 파이썬 버전명만을 지워주었다.

(venv)$ vim Dockerfile
FROM python

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
            postgresql-client \
	        && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

docker 이미지 빌드 후 실행시키기

(venv)$ docker build -t dockerdjango .
(venv)$ docker run --name dockerdjango -p 8000:8000 -d dockerdjango:latest

컨테이너 실행 로그를 보려면 docker logs <컨테이너 이름> 명령을 입력하면 된다.

 

이제 다 끝났다!

이제 <도커 가상머신 ip>:8000으로 접속해서 다음과 같은 화면이 뜬다면 성공!


참고

https://hub.docker.com/_/django

https://github.com/siner308/django-with-custom-image