All checks were successful
Deploy MES Core / deploy (push) Successful in 3m7s
42 lines
2.6 KiB
Docker
42 lines
2.6 KiB
Docker
# Используем "легкую" версию 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 \
|
||
libfreetype6 libpng16-16 \
|
||
fonts-dejavu-core \
|
||
&& 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"] |