From 81a406962318052bfeba34182d7bbdd846c92a2a Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 16 Sep 2025 00:43:45 +0300 Subject: [PATCH] Refactor Ansible playbook for improved server setup and monitoring - Update SSH user configuration for enhanced security - Add tasks for UFW setup and Docker service management - Optimize data migration processes for bots - Implement checks for database permissions and sizes - Clean up temporary files post-migration --- .dockerignore | 47 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile.optimized | 45 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile.optimized diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f942245 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,47 @@ +# .dockerignore в папке prod/ + +# Игнорируем ВСЕХ ботов - они не нужны в этом контейнере +bots/ + +# Игнорируем ВСЕ скрытые файлы и папки (кроме .gitignore) +.* +!.gitignore + +# Остальные стандартные исключения +Dockerfile +docker-compose.yml +docker-compose.*.yml +README.md +LICENSE +.env +.dockerignore + +__pycache__ +*.pyc +*.pyo +*.pyd +.pytest_cache +.coverage +htmlcov/ + +*.log +logs/ + +venv/ +.venv/ +env/ +.env/ +requirements-dev.txt + +tests/ +test/ +docs/ +doc/ + +.vscode/ +.idea/ + +data/ +*.bin +*.dat +*.model \ No newline at end of file diff --git a/Dockerfile.optimized b/Dockerfile.optimized new file mode 100644 index 0000000..b591ace --- /dev/null +++ b/Dockerfile.optimized @@ -0,0 +1,45 @@ +########################################### +# Этап 1: Сборщик (Builder) +########################################### +FROM python:3.9-slim as builder + +# Устанавливаем ТОЧНО ТОЛЬКО то, что нужно для компиляции +RUN apt-get update && apt-get install --no-install-recommends -y \ + gcc \ + python3-dev \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY requirements.txt . + +# Критически важный момент: устанавливаем в отдельную папку +RUN pip install --no-cache-dir --target /install -r requirements.txt + + +########################################### +# Этап 2: Финальный образ (Runtime) +########################################### +# Используем ОЧЕНЬ легковесный базовый образ +FROM python:3.9-alpine as runtime + +# В Alpine Linux свои пакеты. apk вместо apt. +# Устанавливаем минимальные рантайм-зависимости для psutil и подобных. +RUN apk add --no-cache libstdc++ + +# Создаем пользователя (в Alpine другие команды) +RUN addgroup -g 1000 monitor && \ + adduser -D -u 1000 -G monitor monitor + +WORKDIR /app + +# Копируем зависимости из сборщика +COPY --from=builder --chown=1000:1000 /install /usr/local/lib/python3.9/site-packages +# Копируем исходный код +COPY --chown=1000:1000 . . + +USER 1000 + +# Важно: явно указываем Python искать зависимости в скопированной директории +ENV PYTHONPATH="/usr/local/lib/python3.9/site-packages:${PYTHONPATH}" + +CMD ["python", "infra/monitoring/main.py"] \ No newline at end of file