Top.Mail.Ru

Развёртывание Django + PostgreSQL с помощью Docker

Развёртывание Django + PostgreSQL с помощью Docker

 

🚀 Развёртывание Django + PostgreSQL с помощью Docker

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


📁 Структура проекта

myproject/
├── app/
│   ├── Dockerfile
│   ├── requirements.txt
│   └── manage.py (и остальные файлы Django)
├── .env
├── docker-compose.yml
└── README.md

Создайте директорию myproject, перейдите в неё и инициализируйте Django:

django-admin startproject core app/

В папке app/ создайте файл Dockerfile:

# Dockerfile

FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /app

COPY requirements.txt .

RUN pip install --upgrade pip && pip install -r requirements.txt

COPY . .

В app/requirements.txt укажите зависимости:

Django>=4.2,<5.0
psycopg2-binary>=2.9

Создайте в корне файл docker-compose.yml:

version: '3.9'

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

  db:
    image: postgres:14
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    env_file:
      - .env

volumes:
  postgres_data:

Создайте файл .env в корне проекта:

POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

В app/core/settings.py замените DATABASES:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.getenv('POSTGRES_DB'),
        'USER': os.getenv('POSTGRES_USER'),
        'PASSWORD': os.getenv('POSTGRES_PASSWORD'),
        'HOST': 'db',
        'PORT': '5432',
    }
}

Выполните команды:

docker-compose build
docker-compose run web python manage.py migrate
docker-compose up

Перейдите в браузере по адресу:
👉 http://localhost:8000

docker-compose run web python manage.py createsuperuser

Теперь у вас есть полностью изолированное Django-приложение, работающее с PostgreSQL, готовое к разработке или деплою.

Автор:

109

Читайте также

2 комментария

  • Имя автора
    supermasteradminforever@mail.ru
    15.05.2025 в 11:46

    Как развернуть проект в интернете?


  • Имя автора
    a_l_e_k_s@mail.ru
    15.05.2025 в 11:47

    На vps сервере или https://dockerhosting.ru


Бот: Здравствуйте! Я чат-бот веб-разработчика. Чем могу помочь в создании или доработке вашего сайта?