Развертывание Django-приложения с PostgreSQL с использованием Docker Compose
Введение
Docker Compose позволяет легко развернуть несколько контейнеров и связать их между собой, что удобно при разработке и развертывании Django-приложений. В этом руководстве мы настроим проект Django с базой данных PostgreSQL, используя Docker и Docker Compose.
Требования
- Установленный Docker и Docker Compose.
- Базовые знания 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 .
Шаг 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

Шаг 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. Такое окружение позволяет разработчикам и командам быстро развернуть приложение без необходимости в сложной конфигурации на локальной машине.


