d9e8c2d8bd
- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock) - Переделана система конфигурации Django с .env переменными - Добавлен файл .env для локальной разработки (SQLite БД) - Обновлен settings.py для работы с переменными окружения - Создана документация по локальной разработке (DEVELOPMENT.md) - Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml) - Обновлен .gitignore для Python/Django проекта Проект работает локально с миграциями и админ пользователем (admin/1234).
60 lines
2.2 KiB
Docker
60 lines
2.2 KiB
Docker
# 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"]
|
|
|