본문 바로가기

Django에서 Docker를 활용한 배포 방법: 단계별 가이드

_Big 2025. 5. 20.
반응형

django 로고 이미지


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

 

반응형

댓글