/
Ob-Zen
/
Prosoft-systems-test-DevOps
Обзор
Документация
Войти
/
Ob-Zen
/
Prosoft-systems-test-DevOps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Test-Dockerfile/Dockerfile
52 строки
2 KB
Danila Kuzovlev
Add 1 chapter solution
01 июн 2026, 21:19
01 июн 2026, 21:19
21bbb16
Код
Авторство
О чём код?
FROM python:3.12-slim AS base # В образе есть необходимые утилиты по типу pip и venv # build-essential нужен на случай, если будем устанавливать на какой-то хитрый pip-пакет, который придется компилировать RUN apt update && apt install -y --no-install-recommends \ build-essential \ && rm -rf /var/lib/apt/lists/* # Создам venv и добавляем его в PATH RUN python3 -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" # Устанавливаем зависимости COPY requirements.txt /tmp/requirements.txt RUN pip install --upgrade pip && \ pip install --no-cache-dir -r /tmp/requirements.txt FROM python:3.12-slim AS run # Устанавливаем curl для healthcheck и создаем пользователя RUN apt update && apt install -y --no-install-recommends \ curl \ bash \ && rm -rf /var/lib/apt/lists/* # Этот RUN сделан отдельно, потому что установка пакетов долгая, а так слой с apt закэшировался целиком, но можно и объединить эти команды RUN groupadd -g 1002 appgroup && \ useradd -u 1002 -g appgroup -s /bin/false appuser && \ mkdir -p /opt/app/logs && \ chown -R appuser:appgroup /opt/app # Копируем venv из предыдущего этапа COPY --from=base /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" WORKDIR /opt/app COPY . . RUN chmod 750 /opt/app && \ chmod 770 /opt/app/logs && \ chmod +x /opt/app/entrypoint.sh USER appuser EXPOSE 5000 HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start-period=5s \ CMD curl -f http://localhost:5000/health || exit 1 LABEL version="1.0.0" description="Flask application with environment-based launcher" ENTRYPOINT [ "/opt/app/entrypoint.sh" ]