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:
57
Dockerfile
57
Dockerfile
@@ -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"]
|
||||
Reference in New Issue
Block a user