/
monik
/
lab2_cicd_monitoring
Обзор
Документация
Войти
/
monik
/
lab2_cicd_monitoring
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Dockerfile
61 строка
2 KB
Kirill Kazarin
lab 2 demo ready
26 авг 2025, 01:21
26 авг 2025, 01:21
86162a4
Код
Авторство
О чём код?
# Multi-stage Dockerfile для Python Flask приложения # Этап 1: Сборка и тестирование FROM python:3.11-slim AS builder # Устанавливаем системные зависимости RUN apt-get update && apt-get install -y \ gcc \ && rm -rf /var/lib/apt/lists/* # Устанавливаем рабочую директорию WORKDIR /app # Устанавливаем Python зависимости COPY requirements.txt . RUN pip install --no-cache-dir --user -r requirements.txt # Копируем исходный код COPY . . # Запускаем только unit тесты (без E2E) RUN python -m pytest tests/test_app.py --junitxml=test-results/junit.xml -v # Этап 2: Продакшн образ FROM python:3.11-slim AS production # Создаем пользователя для безопасности RUN groupadd -r appuser && useradd -r -g appuser appuser # Устанавливаем только runtime зависимости RUN pip install --no-cache-dir gunicorn # Копируем Python зависимости из builder этапа COPY --from=builder /root/.local /home/appuser/.local # Копируем исходный код COPY --from=builder /app /app # Устанавливаем рабочую директорию WORKDIR /app # Передаем права пользователю RUN chown -R appuser:appuser /app # Переключаемся на непривилегированного пользователя USER appuser # Добавляем локальные Python пакеты в PATH ENV PATH=/home/appuser/.local/bin:$PATH # Открываем порт EXPOSE 5000 # Запускаем приложение CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "src.app:app"] # Метаданные LABEL maintainer="student@example.com" LABEL version="1.0.0" LABEL description="Python Flask API для лабораторной работы №2" LABEL org.opencontainers.image.source="https://gitverse.ru/student/lab2-cicd-monitoring"