Files
octopus/docker/Dockerfile

69 lines
2.0 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 приложения с 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"]