Files
2024-test-rosmorport/Dockerfile
erjemin d9e8c2d8bd feat: Настройка проекта для локальной разработки
- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
2026-03-31 00:09:46 +03:00

60 lines
2.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"]