diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 948c850..ab4221a 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -170,7 +170,7 @@ jobs: -e SECRET_KEY="${{ secrets.APP_SECRET_KEY }}" \ $IMAGE_NAME:latest - sleep 5 + sleep 15 if curl -f http://localhost:$PORT/health; then echo "✅ Деплой успешно завершен!" echo "🌐 Приложение доступно на порту $PORT" diff --git a/Dockerfile b/Dockerfile index 50fffe2..ec2efcd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,37 +1,21 @@ -# Многоступенчатая сборка для оптимизации -FROM python:3.12-slim AS builder - -WORKDIR /app - -# Устанавливаем системные зависимости (если нужны для сборки) -RUN apt-get update && apt-get install -y --no-install-recommends gcc && rm -rf /var/lib/apt/lists/* - -# Устанавливаем зависимости -COPY requirements.txt . -RUN pip install --no-cache-dir --user -r requirements.txt - -# Финальный образ FROM python:3.12-slim WORKDIR /app -# Копируем зависимости из builder -COPY --from=builder /root/.local /root/.local -ENV PATH=/root/.local/bin:$PATH +# Ставим зависимости глобально (доступно всем пользователям) +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt -# Копируем код приложения +# Копируем код COPY . . -# Создаем пользователя для запуска +# Создаём пользователя и даём права на /app RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app USER appuser -# Экспортируем порт EXPOSE 5000 -# Health check (requests должен быть в requirements.txt!) HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:5000/health')" || exit 1 -# Запускаем через gunicorn CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "run:app"] \ No newline at end of file