From 632d9e9f356947c2290e800ea800467669b341ce Mon Sep 17 00:00:00 2001 From: Squ1reX <82816845+Fl1riX@users.noreply.github.com> Date: Sat, 30 May 2026 16:05:35 +0300 Subject: [PATCH 1/2] Revert "Feature/docker security improvements (#25)" This reverts commit e57842374bd2ec1795633435bd3a2d7eef2cfa02. --- .dockerignore | 8 +----- Dockerfile.api | 7 ----- Dockerfile.bot | 16 +---------- docker-compose.yml | 35 +++---------------------- src/logger.py | 4 +++ src/presentation/api/v1/auth/tg_link.py | 2 ++ 6 files changed, 11 insertions(+), 61 deletions(-) diff --git a/.dockerignore b/.dockerignore index 7d6764a..ea7e79c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,12 +4,6 @@ __pycache__/ .venv/ .vscode/ .mypy_cache/ -.pytest_cache/ -.ruff_cache/ -.coverage -coverage.xml -TODO.md tests/ db_test_data.py -LICENSE -.env \ No newline at end of file +LICENSE \ No newline at end of file diff --git a/Dockerfile.api b/Dockerfile.api index f6dd8d7..97154a8 100644 --- a/Dockerfile.api +++ b/Dockerfile.api @@ -5,9 +5,6 @@ FROM python:3.13-slim # создаем папку /app. Весь код будет тут WORKDIR /app -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 - # Копируем только requrements.txt(кэшируется) COPY requirements.txt . @@ -21,10 +18,6 @@ COPY . . RUN rm -rf /app/src/bot RUN chmod +x entrypoint.sh -RUN useradd -m -r app \ - chown -R app:app /app -USER app - # Открываем порт EXPOSE 8000 diff --git a/Dockerfile.bot b/Dockerfile.bot index 4b70a78..e46e5f8 100644 --- a/Dockerfile.bot +++ b/Dockerfile.bot @@ -3,13 +3,9 @@ FROM python:3.13-slim WORKDIR /app -#Отключаем создание файлов .pyc и __pycache__ -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 - # Установка системных зависимостей RUN apt-get update && apt-get install -y \ - gcc \ + gcc \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt . @@ -18,20 +14,10 @@ COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt -# Создаем пользователя -# -m создает домашнюю директорию пользователя. -# -r - создает системного пользователя(служебная учетка с ограниченными правами) -# через chown рекурсивно(-R) меняем права доступа на файлах каталога для пользователя app, группы app (app:app) - COPY src/presentation/bot ./src/presentation/bot COPY src/logger.py ./src/ COPY src/domain/services ./src/domain/services COPY src/shared/ ./src/shared/ COPY src/config.py ./src/ -RUN useradd -m -r app && \ - chown -R app:app /app - -USER app - CMD ["python", "-m", "src.presentation.bot.handlers.bot"] diff --git a/docker-compose.yml b/docker-compose.yml index 6270bf2..7b68220 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,10 +16,6 @@ services: - postgres_data:/var/lib/postgresql/data # стандартное мето хранения файлов postgres (имя_volume:путь внутри контейнера) mem_limit: 512m mem_reservation: 256m - networks: - - api_db_net - security_opt: - - no-new-privileges:true # Запрет на повышение прав до root api: image: ghcr.io/fl1rix/steeltime-api:latest @@ -39,17 +35,8 @@ services: restart: unless-stopped mem_limit: 1g # Лимиты ресурсов cpus: 0.5 - networks: - - api_bot_net - - api_db_net - read_only: true - security_opt: - - no-new-privileges:true - cap_drop: - - ALL - tmpfs: - - /tmp + bot: image: ghcr.io/fl1rix/steeltime-bot:latest restart: unless-stopped @@ -62,34 +49,18 @@ services: condition: service_healthy mem_limit: 256m cpus: 0.25 - networks: - - api_bot_net - read_only: true - security_opt: - - no-new-privileges:true - cap_drop: # Забирает все доступные привилегии у root пользователя. - - ALL - tmpfs: # Папка, доступная для записи инфорамции, в случае надобности. - - /tmp watchtower: image: containrrr/watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 300 - security_opt: - - no-new-privileges:true - tmpfs: - - /tmp volumes: postgres_data: driver: local networks: - api_db_net: + default: driver: bridge - internal: true - - api_bot_net: - driver: bridge \ No newline at end of file + name: steeltime_network \ No newline at end of file diff --git a/src/logger.py b/src/logger.py index 493e140..2036122 100644 --- a/src/logger.py +++ b/src/logger.py @@ -9,4 +9,8 @@ console_handler = logging.StreamHandler() # вывод логов в консоль console_handler.setFormatter(formatter) +handler = logging.FileHandler(filename="SteelTime.log", encoding="utf-8") # файл для записи логов +handler.setFormatter(formatter) + +logger.addHandler(handler) logger.addHandler(console_handler) \ No newline at end of file diff --git a/src/presentation/api/v1/auth/tg_link.py b/src/presentation/api/v1/auth/tg_link.py index f706913..90381cc 100644 --- a/src/presentation/api/v1/auth/tg_link.py +++ b/src/presentation/api/v1/auth/tg_link.py @@ -51,6 +51,8 @@ async def create_telegram_magic_link( token = secrets.token_urlsafe(32) expires = datetime.now(timezone.utc) + timedelta(minutes=10) + #! TODO: Добавить изоляцию на уровне docker + logger.info("Сохранение magic токена...") await TgLinkService.save_link_token(token=token, expires_at=expires, db=db, telegram_id=telegram_id) logger.info("Токен успешно сохранен!") From 18badb9d082d8f65c349aeda64c7b492c38588b9 Mon Sep 17 00:00:00 2001 From: Squ1reX <82816845+Fl1riX@users.noreply.github.com> Date: Sat, 30 May 2026 16:09:51 +0300 Subject: [PATCH 2/2] fix(logger): delete file logging --- src/logger.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/logger.py b/src/logger.py index 2036122..12f9008 100644 --- a/src/logger.py +++ b/src/logger.py @@ -9,8 +9,4 @@ console_handler = logging.StreamHandler() # вывод логов в консоль console_handler.setFormatter(formatter) -handler = logging.FileHandler(filename="SteelTime.log", encoding="utf-8") # файл для записи логов -handler.setFormatter(formatter) - -logger.addHandler(handler) -logger.addHandler(console_handler) \ No newline at end of file +logger.addHandler(console_handler)