feat: Add Docker infrastructure for multi-tenant Django application with services for database, caching, and task processing.

This commit is contained in:
2026-01-17 18:27:57 +03:00
parent 10ab804396
commit 9b4b1277ee
5 changed files with 9 additions and 9 deletions

68
docker/Dockerfile Normal file
View File

@@ -0,0 +1,68 @@
# Dockerfile для Django приложения с Celery
FROM python:3.11-slim
# Переменные окружения
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DJANGO_SETTINGS_MODULE=myproject.settings
# Установка системных зависимостей
RUN apt-get update && apt-get install -y --no-install-recommends \
# Для PostgreSQL
libpq-dev \
postgresql-client \
# Для Pillow и pillow-heif
libjpeg-dev \
libpng-dev \
libwebp-dev \
libheif-dev \
libde265-dev \
# Для сборки Python пакетов
gcc \
g++ \
# Утилиты
curl \
&& rm -rf /var/lib/apt/lists/*
# Рабочая директория
WORKDIR /app
# Копируем requirements и устанавливаем зависимости
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Копируем проект
COPY . .
# Создаём директории для статики и медиа
RUN mkdir -p /app/staticfiles /app/media
# Создаём непривилегированного пользователя
RUN useradd -m -u 1000 appuser
# Установка gosu для безопасного понижения привилегий
RUN set -eux; \
apt-get update; \
apt-get install -y gosu; \
rm -rf /var/lib/apt/lists/*; \
# Проверка работы gosu
gosu nobody true
# Копируем entrypoint скрипт
COPY docker/entrypoint.sh /entrypoint.sh
COPY docker/create_public_tenant.py /app/docker/create_public_tenant.py
RUN chmod 755 /entrypoint.sh && chown appuser:appuser /entrypoint.sh
# Меняем владельца рабочей директории
RUN chown -R appuser:appuser /app
# USER appuser - УДАЛЕНО: запускаем entrypoint от root для настройки прав
# Порт приложения
EXPOSE 8000
# Точка входа
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
# Команда по умолчанию
CMD ["web"]