Docker를 호스트로 사용하는 Django 개발 - 5부: Django 개발
docker-compose
를 통해 실행되는 애플리케이션 설정 및 도커 서비스를 다루었습니다. 이 단계에서는 docker 컨테이너를 사용하여 Django 애플리케이션을 개발합니다.목차
docker-compose
services 다이빙하자
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'
}
}
여기서
database
는 docker-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:
- Add the
requests
dependency with the version number in the host'srequirements.txt
file
requests==<version>
- 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
Reference
이 문제에 관하여(Docker를 호스트로 사용하는 Django 개발 - 5부: Django 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anujdev/django-development-using-docker-as-host-part-5-django-development-27bj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)