From 164db495b40187a7ace7cabc0f176699a21f0ccb Mon Sep 17 00:00:00 2001 From: NotBigGhost Date: Fri, 18 Sep 2026 23:55:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=B5=D0=B7=D0=BE=D0=BF=D0=B0=D1=81?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8C:=20dev-=D0=91=D0=94=20=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BF=D0=B0=D0=B4=D0=B0=D1=8E=D1=82=20=D0=B2=20?= =?UTF-8?q?Docker-=D0=BE=D0=B1=D1=80=D0=B0=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Шаблоны .dockerignore отсчитываются от корня контекста: `data/` ловил только корневую папку, `backend/*.db` — только файлы прямо в backend/. Dockerfile копирует backend/ целиком, и в каждый прод-образ уходили backend/data/dev/ (dev-БД с хешами паролей и аудитом, uploads) и egg-info от pip install -e. Теперь исключены backend/data/, любые *.db/-wal/-shm, *.egg-info, .env в любой папке и backups/ (копии прод-БД не уходят и в контекст сборки). README больше не говорит о дыре. #71 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd --- .dockerignore | 19 ++++++++++++++----- README.md | 5 ++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.dockerignore b/.dockerignore index 54ede4e..7559c7c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,13 +1,23 @@ +# Шаблоны отсчитываются от корня контекста: без «**/» правило ловит только корень +# (так `data/` пропускал backend/data/dev/ с dev-БД и загрузками в образ, #71). + # Python **/__pycache__/ **/*.pyc +**/*.egg-info/ backend/.venv/ backend/.pytest_cache/ -backend/*.db -backend/*.db-wal -backend/*.db-shm backend/openapi.json +# Данные: dev-БД, загрузки и ачивки дева (backend/data/dev/), любые файлы SQLite и +# локальные копии бэкапов — ни в образ, ни в контекст сборки +backend/data/ +data/ +backups/ +**/*.db +**/*.db-wal +**/*.db-shm + # Node / сборка фронта frontend/node_modules/ frontend/dist/ @@ -23,8 +33,7 @@ backend/tests/ backend/pyproject.toml # Прочее -.env -data/ +**/.env **/.DS_Store *.md .claude/ diff --git a/README.md b/README.md index cb6d42a..9682108 100644 --- a/README.md +++ b/README.md @@ -200,9 +200,8 @@ docker compose up -d # pull_policy: always — тянет свежие (`backend/data/dev/`), prod → `PROD_DATABASE_URL` (том `/data`). Так же раздельно лежат загрузки (`*_UPLOAD_DIR`) и ачивки (`*_ACHIEVEMENTS_DIR`). - **В Docker идёт только прод-код:** dev-вход (stub), dev-удаление аккаунтов и тесты физически - исключены из образа (`.dockerignore`). -- **Внимание:** данные дева (`backend/data/dev/`) сейчас **попадают** в образ — правило - `data/` в `.dockerignore` исключает только корневую папку `data/` (задача #71). + исключены из образа (`.dockerignore`). Данные дева (`backend/data/`), любые файлы SQLite + и локальные бэкапы (`backups/`) в образ тоже не попадают. ## Git и деплой -- 2.54.0