실습 저장소
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