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

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

1. Установите Docker:
- Перейдите на официальный сайт Docker (https://www.docker.com/) и скачайте версию Docker Desktop для MacOS.
- Запустите установщик и следуйте инструкциям для установки Docker.

2. Создайте проект Django:
- Установите Django, выполнив следующую команду в терминале:

  pip install django

- Создайте новый проект Django с помощью команды:

  django-admin startproject myproject

3. Создайте файл Dockerfile:
- В корневой папке проекта создайте новый файл с именем Dockerfile (без расширения).
- Откройте этот файл в текстовом редакторе и добавьте следующий код:

  FROM python:3

  ENV PYTHONUNBUFFERED=1

  WORKDIR /code

  COPY requirements.txt /code/

  RUN pip install -r requirements.txt

  COPY . /code/

4. Создайте файл 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).

5. Создайте файл requirements.txt:
- В корневой папке проекта создайте новый файл с именем requirements.txt.
- Внутри этого файла добавьте все зависимости Django и других пакетов, которые ваше приложение использует. Например:

  Django==3.2.5
  psycopg2-binary==2.9.1

6. Соберите и запустите контейнеры:
- Откройте терминал и перейдите в корневую папку проекта.
- Выполните команду для создания и запуска контейнеров:

  docker-compose up --build

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

7. Настройте 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.

8. Запустите миграции и проверьте подключение:
- В терминале выполните следующие команды:

  docker-compose exec web python manage.py migrate
  docker-compose exec web python manage.py createsuperuser

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

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

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