Как на MacOS правильно подключить Django к БД в Docker?

Чтобы правильно подключить Django к базе данных в Docker на MacOS, вам понадобятся следующие шаги:

  1. Установите Docker:
  • Перейдите на официальный сайт Docker (https://www.docker.com/) и скачайте версию Docker Desktop для MacOS.
  • Запустите установщик и следуйте инструкциям для установки Docker.
  1. Создайте проект Django:
  • Установите Django, выполнив следующую команду в терминале:
  pip install django
  • Создайте новый проект Django с помощью команды:
  django-admin startproject myproject
  1. Создайте файл Dockerfile:
  • В корневой папке проекта создайте новый файл с именем Dockerfile (без расширения).
  • Откройте этот файл в текстовом редакторе и добавьте следующий код:
  FROM python:3

  ENV PYTHONUNBUFFERED=1

  WORKDIR /code

  COPY requirements.txt /code/

  RUN pip install -r requirements.txt

  COPY . /code/
  1. Создайте файл docker-compose.yml:
  • В корневой папке проекта создайте новый файл с именем docker-compose.yml.
  • Откройте этот файл в текстовом редакторе и добавьте следующий код:
  version: '3'

  services:
    db:
      image: postgres
      ports:
        - "5432:5432"
      environment:
        POSTGRES_USER: myprojectuser
        POSTGRES_PASSWORD: myprojectpassword
        POSTGRES_DB: myprojectdb

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

В данном файле определены две службы: db (для базы данных) и web (для приложения Django).

  1. Создайте файл requirements.txt:
  • В корневой папке проекта создайте новый файл с именем requirements.txt.
  • Внутри этого файла добавьте все зависимости Django и других пакетов, которые ваше приложение использует. Например:
  Django==3.2.5
  psycopg2-binary==2.9.1
  1. Соберите и запустите контейнеры:
  • Откройте терминал и перейдите в корневую папку проекта.
  • Выполните команду для создания и запуска контейнеров:
  docker-compose up --build

Эта команда создаст и запустит контейнеры, описанные в файле docker-compose.yml.

  1. Настройте Django для подключения к базе данных:
  • В файле settings.py вашего проекта Django обновите настройки базы данных следующим образом:
  DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.postgresql',
          'HOST': 'db',
          'PORT': '5432',
          'NAME': 'myprojectdb',
          'USER': 'myprojectuser',
          'PASSWORD': 'myprojectpassword',
      }
  }

Обратите внимание, что значения переменных HOST, NAME, USER и PASSWORD соответствуют значениям, указанным в файле docker-compose.yml для службы db.

  1. Запустите миграции и проверьте подключение:
  • В терминале выполните следующие команды:
  docker-compose exec web python manage.py migrate
  docker-compose exec web python manage.py createsuperuser

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

  • После успешного выполнения команды createsuperuser вы сможете войти в административную панель Django.

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