Remove PID management functionality from the bot, including related endpoints and references in the codebase. Update Dockerfile to optimize the build process by separating build and runtime stages. Enhance healthcheck implementation in Dockerfile to use Python instead of curl. Update README to reflect the removal of PID file management and related endpoints.

This commit is contained in:
2025-09-16 17:49:49 +03:00
parent dc4300c6f2
commit e8fa682926
7 changed files with 38 additions and 357 deletions

View File

@@ -1,32 +1,49 @@
# Используем официальный Python образ
FROM python:3.9-slim
###########################################
# Этап 1: Сборщик (Builder)
###########################################
FROM python:3.9-slim as builder
# Устанавливаем рабочую директорию
WORKDIR /app
# Устанавливаем системные зависимости
# Устанавливаем ВСЁ для сборки
RUN apt-get update && apt-get install -y \
gcc \
g++ \
curl \
python3-dev \
&& rm -rf /var/lib/apt/lists/*
# Копируем файл зависимостей
WORKDIR /app
COPY requirements.txt .
# Устанавливаем Python зависимости
RUN pip install --no-cache-dir -r requirements.txt
# Устанавливаем зависимости в отдельную папку
RUN pip install --no-cache-dir --target /install -r requirements.txt
# Копируем исходный код приложения
COPY . .
###########################################
# Этап 2: Финальный образ (Runtime)
###########################################
FROM python:3.9-alpine as runtime
# Устанавливаем ТОЛЬКО НЕОБХОДИМЫЕ рантайм-зависимости
# curl НЕ НУЖЕН - используем встроенный Python для healthcheck
RUN apk add --no-cache \
# Минимальные библиотеки для работы Python-пакетов
libstdc++
# Создаем пользователя (в Alpine Linux другие команды)
RUN addgroup -g 1001 app && \
adduser -D -u 1001 -G app app
WORKDIR /app
# Копируем зависимости из сборщика
COPY --from=builder --chown=1001:1001 /install /usr/local/lib/python3.9/site-packages
# Создаем директории для данных
RUN mkdir -p database logs
# Создаем пользователя для безопасности
RUN groupadd --gid 1001 app && \
useradd --create-home --shell /bin/bash --uid 1001 --gid 1001 app && \
RUN mkdir -p database logs && \
chown -R 1001:1001 /app
# Копируем исходный код
COPY --chown=1001:1001 . .
USER 1001:1001
# Открываем порты
@@ -36,9 +53,9 @@ EXPOSE 8081
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1
# Добавляем healthcheck
# Healthcheck БЕЗ curl - используем встроенный Python
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:8081/health || exit 1
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8081/health', timeout=5)" || exit 1
# Команда по умолчанию
CMD ["python", "main.py"]
CMD ["python", "main.py"]