- Добавлена конфигурация через 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"]
|
||
|