Files
MES_Core/Dockerfile
ackFromRedmi f759c2c17e
All checks were successful
Deploy MES Core / deploy (push) Successful in 9s
Обновил модели: добавил Компании и Габариты
2026-03-28 11:49:01 +03:00

39 lines
2.5 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.

# Используем "легкую" версию Python на базе Debian Bookworm.
# slim — это баланс между размером образа и наличием нужных утилит.
FROM python:3.12-slim
# Указываем рабочую папку внутри контейнера. Все последующие команды будут выполняться в ней.
WORKDIR /app
# Настройки окружения:
# 1. Запрещаем Python писать файлы .pyc (байткод) на диск, чтобы не мусорить.
ENV PYTHONDONTWRITEBYTECODE=1
# 2. Отключаем буферизацию логов. Так ты сразу увидишь ошибки в `docker logs`, а не будешь их ждать.
ENV PYTHONUNBUFFERED=1
# Ставим системные зависимости:
# apt-get update — обновляем списки пакетов.
# gcc и libpq-dev — необходимы для сборки библиотеки psycopg2 (драйвер для Postgres).
# rm -rf /var/lib/apt/lists/* — удаляем кэш установщика, чтобы уменьшить размер образа.
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc libpq-dev && rm -rf /var/lib/apt/lists/*
# Сначала копируем только список зависимостей.
# Это нужно для "кэширования слоев": если ты не менял библиотеки, Docker не будет переустанавливать их заново при сборке.
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Теперь копируем весь остальной код проекта в контейнер.
COPY . .
# Даем права на выполнение нашему скрипту запуска.
# Без этого контейнер может упасть с ошибкой "Permission denied".
RUN chmod +x /app/entrypoint.sh
# ENTRYPOINT — это команда, которая выполняется ВСЕГДА при старте.
# Наш скрипт подготовит базу (миграции) и соберет статику.
ENTRYPOINT ["/app/entrypoint.sh"]
# CMD — это основная команда процесса.
# Запускаем Gunicorn, привязываем его к порту 8000 и ставим 3 рабочих процесса для скорости.
CMD ["gunicorn", "core.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"]