Docker를 호스트로 사용하는 Django 개발 - 5부: Django 개발

지금까지 docker-compose를 통해 실행되는 애플리케이션 설정 및 도커 서비스를 다루었습니다. 이 단계에서는 docker 컨테이너를 사용하여 Django 애플리케이션을 개발합니다.

목차


  • Start docker-compose services
  • Django settings
  • Run Django application
  • Live reload Django changes
  • Sync python dependencies
  • Create Django app

  • 다이빙하자



    1. docker-compose 서비스 시작

    Before we start with the Django development, we need to run the docker containers with the required services.
    Execute the following command to run the services defined in the docker-compose.yml file

    docker-compose up --build
    

    After the service has been started, execute the below command in a new terminal to see the running containers

    docker ps
    

    You will see the list of running containers.

    2. 장고 설정

    When the docker-compose runs for the first time, you will see a Django exception

    django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
    

    This is because we have not yet configured the STATIC_ROOT settings where the static files are copied on running collectstatic management command.
    Add the following settings to the src/my_app/settings.py file.

    정적 파일 설정



    STATICFILES_DIRS = [
        os.path.join(os.path.dirname(BASE_DIR), 'static_my_project')
    ]
    
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'static_root')
    
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn', 'media_root')
    

  • STATICFILES_DIRS 설정은 정적 파일을 보관할 위치를 정의합니다. 개발하는 동안 정적 파일을 static_my_project 디렉토리에 보관합니다.
  • STATIC_ROOT는 정적 파일이 collectstatic 관리 명령
  • 에 복사되는 경로입니다.

    데이터베이스 설정



    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': 'database',
            'PORT': '3306',
            'NAME': 'app_db',
            'USER': 'app_db',
            'PASSWORD': 'app_db'
        }
    }
    

    여기서 databasedocker-compose 내부의 서비스입니다.

    템플릿 디렉토리



    응용 프로그램 디렉토리 내에서 템플릿 파일 생성을 허용하려면 TEMPLATES.DIRS 설정에 다음을 추가하십시오.

    [
       os.path.join(BASE_DIR, 'templates')
    ]
    

    이렇게 하면 템플릿 파일을 src/templates 디렉토리와 앱의 templates/ 디렉토리에 추가할 수 있습니다.

    3. Django 애플리케이션 실행

    After adding the settings, run the following to start the docker services

    docker-compose up --build
    

    After the services have been started, let's verify the following:

    • Django database has been migrated to the MySQL database. Visit http://localhost:8080 and use the database credentials to log in to the database management.
    • Open http://localhost:8000 to see the Django application running.

    4. 라이브 리로드 Django 변경 사항

    As we have the .src/ directory mapped to the /app directory, the host .src/ directory will work as the container's /app directory. Any changes in the .src/ directory files will reload the Django application.
    Check the docker-compose logs for the logs.

    4. 파이썬 종속성 동기화

    We do not have python installed in our system instead we are using python using Dockerfile container. So the python dependencies should be installed in the container.

    • Open a bash shell in the running container
    docker exec -it app_image bash
    
    • Install the dependency using pip
    pip install requests
    

    This dependency can be used until the container is running. Once stopped, re-running the container, it will be removed.
    It is required to sync the requirements.txt file in the host with the latest dependencies in the container to keep both in sync.

    This can be achieved in two ways:

    1. Add the requests dependency with the version number in the host's requirements.txt file
    requests==<version>
    
    1. Freeze the pip dependencies from container to the host:
    pip freeze > /requirements.txt
    

    Note, since the requirements.txt in the host is mapped to the same file in the root of the container, the path should start with / . Without / it will create a requirements.txt file inside the src/ directory.


    You can create the Django applications by running the manage.py management commands inside the container and edit the source code in the ./src directory.

    6. 장고 앱 만들기

    Django 앱을 만들어 봅시다



    컨테이너 bash에서 다음을 실행합니다.

    python manage.py startapp home
    
    home 디렉토리에 ./src 디렉토리가 생성됩니다.

    보기 추가


    ./src/home/views.py 파일에 다음 콘텐츠를 추가합니다.

    from django.views.generic import TemplateView
    
    
    class IndexView(TemplateView):
        template_name = "home/index.html"
    

    템플릿 추가



    다음 내용으로 index.html 디렉토리 내에 템플릿 파일templates/home을 생성합니다.

    <html>
    <head>
        <title>Index page</title>
    </head>
    
    <body>
        <h2>Welcome to the Index page</h2>
    </body>
    </html>
    

    라우팅 추가


    home/urls.py 파일에 다음을 추가합니다.

    from django.urls import path
    from home.views import IndexView
    
    app_name = 'home'
    urlpatterns = [
        path('', IndexView.as_view()),
    ]
    

    애플리케이션urls.py 파일에 대한 URL을 포함합니다.

    path('home/', include('home.urls', namespace='home'))
    

    settings.py 파일에 앱 포함



    INSTALLED_APPS = [
       'home'
    ]
    

    브라우저에서 열려



    브라우저에서 다음 URL을 엽니다.

    http://localhost:8000/home/
    

    색인 페이지 콘텐츠가 표시됩니다.

    축하합니다. 도커를 호스트로 사용하여 Django 프로젝트 설정을 완료했습니다.
    이제 호스트 시스템에 의존하지 않고 Django 애플리케이션을 개발할 수 있습니다.

    😊 😍 💻

    Github에서 전체 소스 코드 확인


    anuj9196 / 장고-도커-호스트


    Django 개발을 위한 Docker 호스트. http://bit.ly/django-docker-host

    좋은 웹페이지 즐겨찾기