Old Branch

Django Debug 서버 with docker-compose

woolbro 2020. 7. 21. 11:30
반응형

Dockerfile과 docker-compose 파일로 DEBUG 모드가 적용된 서버를 세팅하자!

docker-compose를 사용해 Debug를 적용하는 방법을 작성하려고 한다.

비슷한 예제로는 flask에 적용 된

[Master_branch/study_branch] - Docker로 작성한 서버, Debug모드 적용하기

 

페이지를 볼 수 있다.

docker-compose Django DEBUG Server

Setup Django

start virtualenv

$ virtualenv venv
$ source venv/bin/activate
#mysqlclient는 오류가 날 수 있다.
# linux - sudo apt-get install python-dev python3-dev pymysql libmysqlclient-dev
(venv) $ pip install django pymysql mysqlclient 
(venv) $ pip freeze > requirements.txt

make Django Project

(venv) $ django-admin startproject config .
(venv) $ python manage.py startapp test_django

Django settings.py 수정

# config/settings.py
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
        'test_django', # Add New Line
]
...

Django 실행해보기

(venv) $ python manage.py runserver

Dockerfile 만들기

위의 Django가 실행이 완료되었다면 Dockerfile을 작성하자

django.Dockerfile

FROM python:3

ENV TZ Asia/Seoul

COPY requirements.txt /tmp/

RUN python3 -m pip install --upgrade pip
RUN pip3 install -r /tmp/requirements.txt

ADD . /app
WORKDIR /app

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

이 Dockerfile을 가지고 db와 연결해주는 compose 파일을 작성 해 주자

docker-compose.yml

version: '3'

services:
    docker-mysql:
        image: mysql
        volumes:
            - /home/me/DwitterDB:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=qwerqwer123

    docker-django:
        build:
            context: .
            dockerfile: django.Dockerfile
        environment:
            - DJANGO_DEBUG=True
            - DJANGO_DB_HOST=docker-mysql
            - DJANGO_DB_PORT=3306
            - DJANGO_DB_NAME=django_test
            - DJANGO_DB_USERNAME=woo
            - DJANGO_DB_PASSWORD=qwerqwer123
        ports:
            - "8000:8000"
        command: python3 manage.py runserver 0:8000
        volumes:
            - .:/app

docker-compose up

다 완성했다면, 테스트해보자

$ docker-compose -f docker-compose.yml up -d