feat: Настройка проекта для локальной разработки

- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
This commit is contained in:
2026-03-31 00:09:46 +03:00
parent a007337f75
commit d9e8c2d8bd
11 changed files with 1925 additions and 27 deletions

59
Dockerfile Normal file
View File

@@ -0,0 +1,59 @@
# Dockerfile для Django приложения rosmorport_tsts
# Многоэтапная сборка для оптимизации размера образа
# Первый этап: builder - установка зависимостей
FROM python:3.12-slim as builder
# Переводим в режим без буферизации для вывода логов
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
# Устанавливаем poetry
RUN pip install --no-cache-dir poetry==1.8.3
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем файлы с информацией о зависимостях
COPY pyproject.toml poetry.lock* ./
# Создаем виртуальное окружение и устанавливаем зависимости
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN poetry install --no-interaction --no-ansi
# Второй этап: runtime - финальный образ
FROM python:3.12-slim
# Переводим в режим без буферизации для вывода логов
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем виртуальное окружение из builder
COPY --from=builder /opt/venv /opt/venv
# Добавляем путь к виртуальному окружению
ENV PATH="/opt/venv/bin:$PATH"
# Копируем содержимое проекта
COPY . .
# Создаём необходимые директории
RUN mkdir -p /app/logs /app/public/media /app/public/static
# Собираем статические файлы
RUN python rosmorport_tsts/manage.py collectstatic --noinput --clear || true
# Устанавливаем пользователя для запуска приложения (из соображений безопасности)
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser
# Открываем порт
EXPOSE 8000
# Команда для запуска приложения (используем gunicorn)
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "4", "--timeout", "120", "rosmorport_tsts.wsgi:application"]