Django 데모 참조 (Django demo reference)
Django 소스는 GitHub에 있어요. fly launch는 Dockerfile과 fly.toml 구성 파일을 제공합니다. 애플리케이션을 변경할 때는 dockerfile-django를 사용해 업데이트된 Dockerfile을 생성할 수 있어요.
출처: 문서
본문
Django 소스는 GitHub에 있습니다.
fly launch는 Dockerfile과
fly.toml 구성 파일을 제공할 거예요.
애플리케이션을 변경할 때는
dockerfile-django
를 사용해 업데이트된 Dockerfile을 생성할 수 있습니다.
조각들이 어떻게 조립되는지 살펴볼게요:
- 원래 web-dictaphone 앱(HTML 제외)은 static 디렉터리에 있으며, 아이콘, 스크립트, 스타일, 웹 매니페스트를 포함하고 모두 정적 파일로 제공됩니다.
clips/templates/clips/index.html에는 HTML 템플릿이 있습니다.- Django Models and databases는 configured되어 개발 모드에서는 Sqlite3를, 프로덕션에서는 PostgreSQL을 데이터베이스로 사용합니다. 데이터베이스 접근은
DATABASE_URL시크릿을 통해 이루어집니다. - Django Storages는 configured되어 개발에서는 파일시스템에, 프로덕션에서는 Tigris에 씁니다. 연결을 설정하는 데 다음 시크릿이 사용됩니다:
AWS_ACCESS_KEY_ID,AWS_ENDPOINT_URL_S3,AWS_REGION,AWS_SECRET_ACCESS_KEY,BUCKET_NAME. - Django Channels는 configured되어 개발에서는 인메모리 채널을, 프로덕션에서는
REDIS_URL시크릿을 기반으로 Redis를 사용합니다.
로직의 핵심 지점:
static/scripts/app.js는 Fetch API를 사용해 여러 지점에서 서버 요청을 하도록 수정되었습니다.clips/views.py에는 인덱스 페이지 요청에 대한 응답과 오디오 클립의 GET, PUT, DELETE를 구성하는 로직이 있습니다.- 서버 측 실시간 구현 코드는 주로 Django Channels에 있으므로,
clips/models.py의 몇 줄만 있으면 됩니다. 클라이언트 측은static/scripts/websocket.js에서 제공됩니다. 업데이트 알림을 받으면 인덱스 페이지를 다시 가져와서 DOM의 본문을 새 내용으로 교체합니다. WHISPER_URL시크릿이 설정되면PUT요청으로 오디오 클립이 Whisper 서버로 전달되고, 응답을 사용해 PostgreSQL 데이터베이스를 업데이트합니다. 이는 Celery를 사용해 이루어집니다. 이에 대한 코드는clips/tasks.py에 있어요.