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:
59
Dockerfile
Normal file
59
Dockerfile
Normal 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"]
|
||||
|
||||
Reference in New Issue
Block a user