В .dockerignore данные дева исключаются правилами data/ и backend/*.db. В .dockerignore шаблоны отсчитываются от корня контекста сборки, и data/ без **/ совпадает только с корневой папкой ./data. backend/*.db покрывает только файлы прямо в backend/.
Dev-данные лежат в backend/data/dev/ (DEV_DATABASE_URL=sqlite:///./data/dev/forbidden_stars.db при запуске из backend/). Dockerfile делает COPY backend/ /app/, поэтому вся папка попадает в образ.
Подтверждение
Локальный образ forbidden-stars:temp-prod (собран 2026-06-26):
scripts/build-push.ps1 собирает прод-образы (docker buildx bake -f docker-compose.yml) с того же контекста, поэтому образ gitea.arseniev.info/notbigghost/forbidden-stars в реестре почти наверняка содержит ту же dev-БД на момент сборки. Это вывод из того же .dockerignore, сам образ из реестра не проверялся.
Прод эти файлы не использует (у него /data на томе), но они лежат в каждом слое образа: пользователи dev-базы, хеши паролей, аудит с IP, загруженные фото. Кто может сделать pull, тот может их достать. Попутно в образ уходит forbidden_stars_backend.egg-info от pip install -e.
Что сделать
В .dockerignore заменить/дополнить правила: backend/data/ (или **/data/), **/*.db, **/*.db-wal, **/*.db-shm, backend/*.egg-info/.
Пересобрать и перепушить образы (scripts/build-push.ps1) и проверить, что в /app/data пусто.
Удалить из реестра старые теги/манифесты с dev-данными (или хотя бы убедиться, что реестр приватный).
Если в dev-базе когда-либо были реальные данные (например, копия прода), считать их скомпрометированными в пределах доступа к реестру.
Найдено при сверке документации с кодом: README утверждает, что «данные дева в образ не попадают (data/ в .dockerignore)».
## Проблема
В `.dockerignore` данные дева исключаются правилами `data/` и `backend/*.db`. В `.dockerignore` шаблоны отсчитываются от корня контекста сборки, и `data/` без `**/` совпадает **только с корневой** папкой `./data`. `backend/*.db` покрывает только файлы прямо в `backend/`.
Dev-данные лежат в `backend/data/dev/` (`DEV_DATABASE_URL=sqlite:///./data/dev/forbidden_stars.db` при запуске из `backend/`). `Dockerfile` делает `COPY backend/ /app/`, поэтому вся папка попадает в образ.
## Подтверждение
Локальный образ `forbidden-stars:temp-prod` (собран 2026-06-26):
```
$ docker run --rm --entrypoint sh forbidden-stars:temp-prod -c "ls -la /app/data/dev"
-rwxr-xr-x 1 appuser appuser 241664 forbidden_stars.db
-rwxr-xr-x 1 appuser appuser 32768 forbidden_stars.db-shm
-rwxr-xr-x 1 appuser appuser 576832 forbidden_stars.db-wal
drwxr-xr-x 1 appuser appuser 4096 uploads
```
`scripts/build-push.ps1` собирает прод-образы (`docker buildx bake -f docker-compose.yml`) с того же контекста, поэтому образ `gitea.arseniev.info/notbigghost/forbidden-stars` в реестре почти наверняка содержит ту же dev-БД на момент сборки. Это вывод из того же `.dockerignore`, сам образ из реестра не проверялся.
Прод эти файлы не использует (у него `/data` на томе), но они лежат в каждом слое образа: пользователи dev-базы, хеши паролей, аудит с IP, загруженные фото. Кто может сделать `pull`, тот может их достать. Попутно в образ уходит `forbidden_stars_backend.egg-info` от `pip install -e`.
## Что сделать
- [ ] В `.dockerignore` заменить/дополнить правила: `backend/data/` (или `**/data/`), `**/*.db`, `**/*.db-wal`, `**/*.db-shm`, `backend/*.egg-info/`.
- [ ] Пересобрать и перепушить образы (`scripts/build-push.ps1`) и проверить, что в `/app/data` пусто.
- [ ] Удалить из реестра старые теги/манифесты с dev-данными (или хотя бы убедиться, что реестр приватный).
- [ ] Если в dev-базе когда-либо были реальные данные (например, копия прода), считать их скомпрометированными в пределах доступа к реестру.
Найдено при сверке документации с кодом: README утверждает, что «данные дева в образ не попадают (`data/` в `.dockerignore`)».
Итог:.dockerignore исключает backend/data/, любые *.db*, *.egg-info, .env в любой папке и backups/. README исправлен. Проверки: одноразовая сборка FROM scratch + COPY backend/ с выгрузкой в папку. Со старым .dockerignore в /app лежали dev-БД, uploads и egg-info, с новым — ничего из этого; прод-код на месте. Статус:Status/In Review Осталось за вами: ревью и мёрж PR; после него — пересобрать и перепушить образы (scripts/build-push.ps1), проверить приватность реестра и удалить старые теги с dev-данными.
Работа выполнена, открыт PR: https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/93
**Итог:** `.dockerignore` исключает `backend/data/`, любые `*.db*`, `*.egg-info`, `.env` в любой папке и `backups/`. README исправлен.
**Проверки:** одноразовая сборка `FROM scratch` + `COPY backend/` с выгрузкой в папку. Со старым `.dockerignore` в `/app` лежали dev-БД, uploads и `egg-info`, с новым — ничего из этого; прод-код на месте.
**Статус:** `Status/In Review`
**Осталось за вами:** ревью и мёрж PR; после него — пересобрать и перепушить образы (`scripts/build-push.ps1`), проверить приватность реестра и удалить старые теги с dev-данными.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Проблема
В
.dockerignoreданные дева исключаются правиламиdata/иbackend/*.db. В.dockerignoreшаблоны отсчитываются от корня контекста сборки, иdata/без**/совпадает только с корневой папкой./data.backend/*.dbпокрывает только файлы прямо вbackend/.Dev-данные лежат в
backend/data/dev/(DEV_DATABASE_URL=sqlite:///./data/dev/forbidden_stars.dbпри запуске изbackend/).DockerfileделаетCOPY backend/ /app/, поэтому вся папка попадает в образ.Подтверждение
Локальный образ
forbidden-stars:temp-prod(собран 2026-06-26):scripts/build-push.ps1собирает прод-образы (docker buildx bake -f docker-compose.yml) с того же контекста, поэтому образgitea.arseniev.info/notbigghost/forbidden-starsв реестре почти наверняка содержит ту же dev-БД на момент сборки. Это вывод из того же.dockerignore, сам образ из реестра не проверялся.Прод эти файлы не использует (у него
/dataна томе), но они лежат в каждом слое образа: пользователи dev-базы, хеши паролей, аудит с IP, загруженные фото. Кто может сделатьpull, тот может их достать. Попутно в образ уходитforbidden_stars_backend.egg-infoотpip install -e.Что сделать
.dockerignoreзаменить/дополнить правила:backend/data/(или**/data/),**/*.db,**/*.db-wal,**/*.db-shm,backend/*.egg-info/.scripts/build-push.ps1) и проверить, что в/app/dataпусто.Найдено при сверке документации с кодом: README утверждает, что «данные дева в образ не попадают (
data/в.dockerignore)».Работа выполнена, открыт PR: #93
Итог:
.dockerignoreисключаетbackend/data/, любые*.db*,*.egg-info,.envв любой папке иbackups/. README исправлен.Проверки: одноразовая сборка
FROM scratch+COPY backend/с выгрузкой в папку. Со старым.dockerignoreв/appлежали dev-БД, uploads иegg-info, с новым — ничего из этого; прод-код на месте.Статус:
Status/In ReviewОсталось за вами: ревью и мёрж PR; после него — пересобрать и перепушить образы (
scripts/build-push.ps1), проверить приватность реестра и удалить старые теги с dev-данными.