CI/CD build notifications
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-11-02 06:33:45 +09:00
parent d5f1809f5a
commit 01532e860a
10 changed files with 1104 additions and 42 deletions

View File

@@ -0,0 +1,65 @@
# Multi-stage Docker build для оптимального размера
FROM python:3.11-slim as base
# Установка системных зависимостей
RUN apt-get update && apt-get install -y \
gcc \
postgresql-client \
curl \
&& rm -rf /var/lib/apt/lists/*
# Создание пользователя приложения
RUN useradd --create-home --shell /bin/bash app
# Установка рабочей директории
WORKDIR /app
# Копирование и установка Python зависимостей
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# Production stage
FROM base as production
# Build arguments для метаданных
ARG BUILD_VERSION=latest
ARG BUILD_DATE
ARG VCS_REF
# Метаданные образа
LABEL org.opencontainers.image.title="CatLink Backend" \
org.opencontainers.image.description="Django REST API для CatLink" \
org.opencontainers.image.version="$BUILD_VERSION" \
org.opencontainers.image.created="$BUILD_DATE" \
org.opencontainers.image.revision="$VCS_REF" \
org.opencontainers.image.source="https://github.com/smartsoltech/links"
# Копирование приложения
COPY --chown=app:app . .
# Создание необходимых директорий
RUN mkdir -p staticfiles media logs && \
chown -R app:app /app
# Переключение на пользователя приложения
USER app
# Сбор статических файлов
RUN python manage.py collectstatic --noinput
# Переменные окружения для продакшена
ENV PYTHONPATH="/app" \
PYTHONUNBUFFERED=1 \
DJANGO_SETTINGS_MODULE="backend.settings" \
PORT=8000
# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:$PORT/api/health/ || exit 1
# Открытие порта
EXPOSE $PORT
# Команда запуска
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "4", "--worker-class", "sync", "--worker-connections", "1000", "--max-requests", "1000", "--max-requests-jitter", "100", "backend.wsgi:application"]