Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Dockerizing Django

Introduction

Dockerizing a Django application involves creating Docker images that can run your Django app in isolated environments. This ensures consistency across different stages of development, testing, and production. In this tutorial, we'll cover the steps to containerize a Django application using Docker.

Prerequisites

Before you begin, ensure you have the following installed:

  • Python (version 3.6 or higher)
  • Django (version 3.0 or higher)
  • Docker
  • Docker Compose

Step 1: Setting Up Your Django Project

If you don't already have a Django project, you can create one using the following commands:

django-admin startproject myproject

cd myproject

Ensure your project structure looks something like this:

myproject/
├── manage.py
└── myproject/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

Step 2: Creating a Dockerfile

Create a file named Dockerfile in the root directory of your project with the following content:

# Use the official Python image from the Docker Hub
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the requirements file into the container
COPY requirements.txt .

# Install the dependencies
RUN pip install -r requirements.txt

# Copy the rest of the application code into the container
COPY . .

# Expose the port the app runs on
EXPOSE 8000

# Command to run the application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
                

This Dockerfile uses the official Python image, sets the working directory, installs dependencies, copies the application code, exposes port 8000, and runs the Django development server.

Step 3: Creating a Requirements File

Create a requirements.txt file in your project root and add the required Python packages:

Django==3.2.7

Make sure to include all the dependencies your project needs.

Step 4: Building the Docker Image

To build the Docker image, run the following command from the root directory of your project:

docker build -t myproject:latest .

This command builds the Docker image and tags it as myproject:latest.

Step 5: Running the Docker Container

After building the image, you can run a container using the following command:

docker run -d -p 8000:8000 myproject:latest

This command runs the container in detached mode and maps port 8000 of the container to port 8000 on your host machine.

Step 6: Using Docker Compose

Docker Compose allows you to manage multi-container Docker applications. Create a file named docker-compose.yml in your project root:

version: '3.8'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myproject
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
                

This configuration file sets up a web service for the Django app and a db service using PostgreSQL.

Step 7: Running Docker Compose

To start your application with Docker Compose, run:

docker-compose up

This command starts both the web and db services defined in the docker-compose.yml file.

Conclusion

Dockerizing your Django application provides a consistent environment for development, testing, and production. By following this tutorial, you should be able to create Docker images for your Django app and manage them using Docker Compose. Happy coding!