From fd701b3bdaff018a3a9273873aaee8cf0c04731f Mon Sep 17 00:00:00 2001 From: tsygankoviva Date: Mon, 26 Oct 2026 18:55:01 +0300 Subject: [PATCH] AURORA-1677: Dockerfile fix --- Dockerfile | 7 +++++-- Makefile | 8 +++++++- README.md | 7 ++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7d9538b..eaab5c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ +# syntax=docker/dockerfile:1 # Образ для dev и `make check-full`. Контекст сборки — корень репозитория arm-core. +# Библиотека передаётся контекстом statements (make docker-build, STATEMENTS_DIR). # Платформенные пакеты raisa_* (Nexus) в образ не ставятся — та же логика, что в `make venv`. FROM python:3.11-slim @@ -8,8 +10,9 @@ ENV PYTHONUNBUFFERED=1 \ WORKDIR /app/api COPY api/requirements.txt ./requirements.txt -RUN grep -v '^raisa_' requirements.txt > /tmp/req.txt \ - && pip install --no-cache-dir -r /tmp/req.txt \ +RUN --mount=type=bind,from=statements,target=/tmp/statements,rw \ + grep -v '^raisa_' requirements.txt > /tmp/req.txt \ + && pip install --no-cache-dir -r /tmp/req.txt /tmp/statements \ && rm /tmp/req.txt COPY api/ ./ diff --git a/Makefile b/Makefile index f4b086b..19ceb3b 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ VENV := api/.venv BIN := $(CURDIR)/$(VENV)/bin STATEMENTS_DIR ?= ../pylib_ai_arm_statements +STATEMENTS_TAG ?= v0.1.1 COMPOSE_FILE ?= ../docs/dev/docker-compose.yml # DBML относительно api/: и в основном workspace, и в worktree .wt/<срез>/ это соседний docs/ DBML ?= ../../docs/model/data-model-v5.19.dbml @@ -54,7 +55,12 @@ check-infra: # Сборка образа из корня репозитория (Dockerfile — бэкенд) docker-build: - docker build -t arm-core . + @release=$$(git -C "$(STATEMENTS_DIR)" rev-parse --verify "refs/tags/$(STATEMENTS_TAG)^{commit}") || \ + { echo "Ошибка: в библиотеке отсутствует тег $(STATEMENTS_TAG); выполните git fetch --tags в $(STATEMENTS_DIR)" >&2; exit 1; }; \ + head=$$(git -C "$(STATEMENTS_DIR)" rev-parse HEAD) || exit 1; \ + [ "$$head" = "$$release" ] || \ + { echo "Ошибка: HEAD библиотеки не совпадает с $(STATEMENTS_TAG)" >&2; exit 1; } + docker build --build-context "statements=$(STATEMENTS_DIR)" -t arm-core . # Фронт: установка зависимостей (raisa-* без Nexus пропускаются как optionalDependencies), biome, типы, сборка web-check: diff --git a/README.md b/README.md index 111ead3..a5a800f 100644 --- a/README.md +++ b/README.md @@ -1073,7 +1073,7 @@ email без учёта регистра проверяет только сер | `make dbml-check` | сверка ORM с `../docs/model/data-model-v5.19.dbml` | | `make migration-cycle` | миграции на временной БД: `upgrade head` → `downgrade base` → `upgrade head`, пустой autogenerate | | `make check` | быстрая проверка без Docker: `lint` + `test` | -| `make docker-build` | сборка образа: `docker build -t arm-core .` | +| `make docker-build` | сборка образа через BuildKit с библиотекой из `STATEMENTS_DIR` (по умолчанию `../pylib_ai_arm_statements`); другой путь: `make docker-build STATEMENTS_DIR=/путь/к/репозиторию` | | `make web-check` | фронт: `npm install`, `biome check src`, `tsc --noEmit`, `npm run build` | | `make check-infra` | быстрая проверка, что PostgreSQL и NATS из compose доступны (иначе: `make up`) | | `make check-full` | полная проверка перед PR: `check` + `dbml-check` + `check-infra` + `test-integration` (в нём цикл миграций) + `e2e` (без профиля `services` пропускается) + `docker-build` + `web-check`; нужна поднятая инфраструктура (`make up`) и Docker | @@ -1235,3 +1235,8 @@ Dockerfile только для локального compose - [`../docs/context/09-delivery-plan.md`](../docs/context/09-delivery-plan.md) — план срезов; - [`../docs/contracts/`](../docs/contracts/) — JSON-схемы обмена с сервисами распознавания; - `openspec/changes/slice-0-skeleton/` — спецификация и решения Среза 0. + +Перед локальной сборкой `make docker-build` проверяет совпадение HEAD библиотеки +с тегом `STATEMENTS_TAG` (по умолчанию `v0.1.1`). Получить тег: +`git -C ../pylib_ai_arm_statements fetch origin --tags`. +Незакоммиченные изменения разрешены и попадают в сборку из `STATEMENTS_DIR`.