логотип PurpleSchool
логотип PurpleSchool

Разработка django в Docker

Автор

Олег Марков

Введение

Разработка с использованием Django внутри контейнеров Docker стала стандартной практикой для многих разработчиков. Docker позволяет создавать изолированные контейнеры, которые включают все необходимые зависимости и настройки для запуска приложения. Благодаря этому подходу, вы можете быстро развернуть ваш Django-проект на любой машине, не беспокоясь о несовместимостях в конфигурациях среды.

В этой статье мы познакомимся с тем, как настроить и разрабатывать Django-приложения внутри Docker. Мы рассмотрим создание Dockerfile, настройку docker-compose, а также основные команды для работы с контейнерами. Все это позволит вам более уверенно запускать свои проекты в контейнерах Docker.

Почему Docker для Django?

Перед тем как углубляться в инструкции, важно понять, почему Docker стал выбором номер один для многих разработчиков Django.

  • Упрощенное управление зависимостями: Все зависимости вашего проекта хранятся в контейнере. Это значит, что вам не нужно беспокоиться о несовместимостях версий библиотек.
  • Изоляция и согласованность: Docker-контейнеры обеспечивают согласованность среды разработки и продакшн.
  • Масштабируемость: Контейнеры облегчает горизонтальное масштабирование приложения благодаря оркестрации.

Начало работы

Установка Docker

Прежде чем начать, убедитесь, что у вас установлены Docker и Docker Compose. Вы можете установить их, следуя инструкции на официальном сайте Docker.

Создание проекта Django

Начнем с создания базового проекта Django. Это можно сделать как на вашей локальной машине, так и сразу в Docker-контейнере.

# Установите Django (если это ещё не сделано)
pip install django

# Создайте новый проект Django
django-admin startproject myproject

Создание Dockerfile

Dockerfile – это текстовый файл, содержащий все команды, необходимые для сборки Docker-образа. Давайте создадим Dockerfile для нашего Django-приложения.

# Используем официальный python-образ для начала
FROM python:3.9

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем нужные файлы в контейнер
COPY requirements.txt requirements.txt

# Устанавливаем зависимости
RUN pip install -r requirements.txt

# Копируем наше приложение в контейнер
COPY . .

# Указываем команду для выполнения нашего Django-приложения
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

Настройка Docker Compose

Docker Compose позволяет нам легко управлять многоконтейнерными приложениями. Создайте файл docker-compose.yml в корневой директории вашего проекта:

version: '3.9'

services:
  web:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db

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

Запуск приложения

Теперь, когда все настроено, давайте запустим наше Django-приложение в Docker-контейнере.

# Собираем образы и запускаем контейнеры
docker-compose up --build

Вы увидите, как Docker загружает зависимости и запускает ваше приложение. После завершения сборки вы сможете открыть браузер и перейти по адресу http://localhost:8000, чтобы увидеть ваше работающее приложение Django.

Настраиваем базу данных

Одним из преимуществ Docker является легкость интеграции различных сервисов. Давайте посмотрим, как настроить PostgreSQL в вашем проекте:

  1. Объявите переменные среды в docker-compose.yml, как показано выше, для настройки базы данных.
  2. Настройте settings.py Django для использования PostgreSQL:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'myproject',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'db',  # Имя сервиса в docker-compose
        'PORT': '5432',
    }
}
  1. Примените миграции, чтобы создать таблицы в базе данных:
# Откройте терминал внутри контейнера web
docker-compose exec web python manage.py migrate

Советы и рекомендации

Автоматическое обновление кода

Чтобы видеть изменения в реальном времени без перезапуска контейнеров, используйте bind-монтирование. Оно прописано в нашем docker-compose.yml:

volumes:
  - .:/app

Просмотр логов

Docker предоставляет удобные команды для просмотра логов:

# Показывает логи всех контейнеров
docker-compose logs

# Показывает логи определенного сервиса
docker-compose logs web

Заключение

Разработка Django-приложений с использованием Docker значительно упрощает деплой и поддержку приложений, обеспечивая стандартизацию среды и легкость масштабирования. Мы разобрали основные шаги создания Docker-контейнера для Django, настройки баз данных с использованием Docker Compose и полезные практики работы с контейнерами.

Изучив и применив эти инструкции, вы сможете ускорить ваш рабочий процесс и обеспечить большую стабильность разрабатываемых приложений. Docker предоставляет мощные инструменты для разработки, которые делают вашу работу более предсказуемой и управляемой.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile