Django에서 Docker를 활용한 배포 방법: 단계별 가이드
Docker는 애플리케이션과 그 종속성을 컨테이너로 패키징하여 일관된 개발 및 배포 환경을 제공합니다. Django 애플리케이션을 Docker로 배포하면 개발, 테스트, 프로덕션 환경 간의 차이를 최소화할 수 있습니다. 이 가이드에서는 Django 프로젝트를 Docker로 컨테이너화하고 배포하는 과정을 단계별로 설명합니다.
1. Django 프로젝트 설정
먼저 Django 프로젝트를 생성하거나 기존 프로젝트를 준비합니다.
django-admin startproject myproject
cd myproject
requirements.txt
파일을 생성하여 프로젝트의 종속성을 명시합니다.
pip freeze > requirements.txt
settings.py
파일에서 환경 변수로 설정을 관리하도록 수정합니다.
import os
SECRET_KEY = os.environ.get("SECRET_KEY", "your-default-secret-key")
DEBUG = os.environ.get("DEBUG", "False") == "True"
ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS", "localhost").split(",")
2. Dockerfile 생성
프로젝트 루트 디렉토리에 Dockerfile
을 생성하여 Docker 이미지를 빌드하는 방법을 정의합니다.
# 공식 Python 이미지 사용
FROM python:3.9
# 작업 디렉토리 생성
WORKDIR /app
# 종속성 복사 및 설치
COPY requirements.txt /app/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
# 프로젝트 파일 복사
COPY . /app/
# 포트 노출
EXPOSE 8000
# 서버 실행 명령
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
3. docker-compose.yml 설정
docker-compose.yml
파일을 생성하여 여러 컨테이너를 정의하고 관리합니다.
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
environment:
- SECRET_KEY=your-secret-key
- DEBUG=True
- ALLOWED_HOSTS=localhost
4. Docker 컨테이너 빌드 및 실행
Docker 이미지를 빌드하고 컨테이너를 실행합니다.
docker-compose build
docker-compose up
브라우저에서 http://localhost:8000
에 접속하여 Django 애플리케이션이 정상적으로 실행되는지 확인합니다.
5. PostgreSQL 데이터베이스 추가 (선택 사항)
docker-compose.yml
에 PostgreSQL 서비스를 추가하여 데이터베이스를 구성할 수 있습니다.
services:
db:
image: postgres
environment:
- POSTGRES_DB=mydatabase
- POSTGRES_USER=myuser
- POSTGRES_PASSWORD=mypassword
settings.py
에서 데이터베이스 설정을 PostgreSQL로 변경합니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get("POSTGRES_DB"),
'USER': os.environ.get("POSTGRES_USER"),
'PASSWORD': os.environ.get("POSTGRES_PASSWORD"),
'HOST': 'db',
'PORT': 5432,
}
}
6. 정적 파일 및 마이그레이션 처리
정적 파일을 수집하고 데이터베이스 마이그레이션을 적용합니다.
docker-compose run web python manage.py collectstatic --noinput
docker-compose run web python manage.py migrate
결론
Docker를 사용하여 Django 애플리케이션을 배포하면 일관된 환경을 유지하면서 개발 및 배포 프로세스를 간소화할 수 있습니다. 이 가이드를 따라 Django 프로젝트를 Docker로 컨테이너화하고, 필요에 따라 PostgreSQL 데이터베이스를 추가하여 확장할 수 있습니다.
Django 모델링: 데이터베이스 설계의 핵심
강력한 웹 애플리케이션은 모두 잘 구조화된 데이터베이스 위에 구축됩니다. Django 세계에서는 데이터를 제대로 모델링하는 것이 모든 것의 출발점입니다—사용자 인터랙션부터 백엔드 처리까
bigadmin.org
댓글