L o a d i n g
Вот подробная инструкция по созданию архитектуры проекта на Django с использованием Docker, Poetry Linux Ubuntu

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

1. Создание структуры проекта

Начнем с создания структуры директорий:

mkdir -p project-root/src/{apps,config,feat,infra/{compose-files},templates,tests,validators}
cd project-root

2. Инициализация Poetry проекта

Инициализируем новый проект с использованием Poetry:

poetry init
Следуйте инструкциям для настройки pyproject.toml. После этого добавьте зависимости для Django и PostgreSQL:

poetry add django psycopg2-binary

3. Создание Django проекта

Теперь создадим Django проект в папке config:

poetry run django-admin startproject config src/config

4. Настройка базы данных

Отредактируйте файл src/config/settings.py для подключения к базе данных PostgreSQL через переменные окружения. Убедитесь, что файл выглядит примерно так:

import os

SECRET_KEY = os.getenv('SECRET_KEY', 'your-default-secret-key')
DEBUG = os.getenv('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', 'localhost').split(',')

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

# STATIC, MEDIA, TEMPLATES, etc.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

5. Настройка Docker

Создайте Dockerfile в корне проекта:

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

# Установка зависимостей для PostgreSQL
RUN apt-get update && apt-get install -y libpq-dev gcc

# Создание рабочего каталога
WORKDIR /app

# Копирование файлов проекта
COPY pyproject.toml poetry.lock ./

# Установка Poetry
RUN pip install poetry

# Установка зависимостей
RUN poetry install --no-root

# Копирование всего проекта
COPY . .

# Открытие порта 8000
EXPOSE 8000

# Запуск сервера разработки Django
CMD ["poetry", "run", "python", "src/manage.py", "runserver", "0.0.0.0:8000"]

6. Настройка Docker Compose

Создайте docker-compose.dev.yaml в папке infra/compose-files:

version: '3.8'

services:
  web:
    build:
      context: ../../..
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    environment:
      - SECRET_KEY=your-secret-key
      - DEBUG=True
      - ALLOWED_HOSTS=localhost,127.0.0.1
      - POSTGRES_DB=project_root
      - POSTGRES_USER=project_root
      - POSTGRES_PASSWORD=project_root
      - POSTGRES_HOST=db
      - POSTGRES_PORT=5432
    depends_on:
      - db

  db:
    image: postgres:13
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: project_root
      POSTGRES_PASSWORD: project_root
      POSTGRES_DB: project_root

volumes:
  postgres_data:

7. Создание первого приложения

Создайте папку для приложения и выполните команду startapp:

mkdir -p src/apps/home
poetry run python src/manage.py startapp home src/apps/home

8. Регистрация приложения

Добавьте ваше приложение в INSTALLED_APPS в src/config/settings.py:

INSTALLED_APPS = [
    # Django Apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Your Apps
    'apps.home',
]

9. Настройка и запуск проекта

Теперь можно запускать проект:

  1. Соберите и запустите контейнеры: docker-compose -f src/infra/compose-files/docker-compose.dev.yaml up --build

  2. Выполните миграции: docker-compose -f src/infra/compose-files/docker-compose.dev.yaml run web poetry run python src/manage.py migrate

  3. Создайте суперпользователя: docker-compose -f src/infra/compose-files/docker-compose.dev.yaml run web poetry run python src/manage.py createsuperuser

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

10. Тестирование и разработка

Для запуска тестов:

docker-compose -f src/infra/compose-files/docker-compose.dev.yaml run web poetry run python src/manage.py test
Для запуска сервера:

docker-compose -f src/infra/compose-files/docker-compose.dev.yaml up

Следуя этим шагам, вы создадите Django проект с аккуратной и гибкой архитектурой, которая хорошо подходит для разработки и масштабирования.

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *