+7 (495) 107-75-45 Подключение
+7 (495) 107-75-47 Тех. поддержка 24/7
Пример
01.11.2024

Развертывание Django-приложения с PostgreSQL с использованием Docker Compose

Введение

Docker Compose позволяет легко развернуть несколько контейнеров и связать их между собой, что удобно при разработке и развертывании Django-приложений. В этом руководстве мы настроим проект Django с базой данных PostgreSQL, используя Docker и Docker Compose.

Требования

  • Установленный Docker и Docker Compose.
  • Базовые знания Django и работы с базами данных.

Django развертывание

Шаг 1. Подготовка проекта Django

Создайте новую директорию для проекта Django и перейдите в нее:

mkdir my_django_project
cd my_django_project

Создайте базовый Dockerfile для Django. Этот файл описывает, как будет выглядеть Docker-контейнер для Django:

# Dockerfile

# Используем официальный образ Python
FROM python:3.10

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

# Копируем файл зависимостей и устанавливаем их
COPY requirements.txt /app/
RUN pip install -r requirements.txt

# Копируем код приложения
COPY . /app/

# Запуск сервера Django
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

Создайте файл requirements.txt и добавьте в него зависимости:

Django>=4.0
psycopg2

Инициализируйте Django-проект (если еще не создан):

docker run -it --rm -v "$PWD":/app -w /app python:3.10 django-admin startproject mysite .

Postgesql Docker

Шаг 2. Настройка Docker Compose

Создайте файл docker-compose.yml для настройки Docker Compose. Этот файл определяет контейнеры для Django и PostgreSQL:

version: '3'

services:
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - mynetwork

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    environment:
      - DJANGO_SETTINGS_MODULE=mysite.settings
    depends_on:
      - db
    networks:
      - mynetwork

volumes:
  postgres_data:

networks:
  mynetwork:

Добавьте PostgreSQL как базу данных в Django. Откройте файл настроек mysite/settings.py и измените настройки базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'db',  # Название сервиса в docker-compose.yml
        'PORT': 5432,
    }
}

Создайте .env файл для хранения переменных окружения, если требуется (например, для секретного ключа Django):

DJANGO_SECRET_KEY=supersecretkey

Запуск Docker

Шаг 3. Запуск контейнеров

Теперь, когда мы создали все необходимые файлы, можно запустить контейнеры с помощью Docker Compose.

Запустите Docker Compose:

docker-compose up -d

Эта команда создаст и запустит контейнеры в фоновом режиме.

Проверьте логи для отладки:

docker-compose logs -f

Выполните миграции базы данных для инициализации структуры базы данных:

docker-compose exec web python manage.py createsuperuser

Шаг 4. Тестирование приложения

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

Для доступа к админ-панели перейдите на http://localhost:8000/admin и войдите с учетными данными суперпользователя.

Шаг 5. Управление контейнерами

Для удобного управления контейнерами можно использовать следующие команды:

Остановить контейнеры:

docker-compose down

Перезапустить контейнеры после изменения конфигурации:

docker-compose down && docker-compose up -d

Просмотр состояния контейнеров:

docker-compose ps

Заключение

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