ci(docker): future-proof backend Dockerfiles (fix root cause from Phase A break)

This commit is contained in:
Александр Зимин
2026-05-10 16:23:03 +00:00
parent f2614244bf
commit 51d6709fb3
4 changed files with 63 additions and 40 deletions
+44
View File
@@ -0,0 +1,44 @@
# Применяется только когда BUILD_CONTEXT=. (root) — это backend Dockerfile'ы
# (ordinis-app, ordinis-read-api, ordinis-projection-writer, ordinis-migrations).
# Admin-ui / docs Dockerfile'ы используют BUILD_CONTEXT=ordinis-admin-ui/ или
# docs/ — этот файл их НЕ затрагивает (Docker BuildKit ищет .dockerignore в
# build context root, не в repo root).
#
# Цель: backend Dockerfile'ы могут делать `COPY . ./` (один rule вместо
# explicit per-module COPY list) — новый Maven module не требует правки
# Dockerfile'ов. Lesson из Phase A: добавили <module>ordinis-notifications</module>
# в pom.xml, забыли COPY в 3 Dockerfile'а → docker build падал на parent
# pom validation.
# Git и IDE
.git/
.gitignore
.gitlab-ci.yml
.idea/
.vscode/
.DS_Store
# Maven build artifacts (jar'ы для backend Dockerfile'ов готовятся в build
# stage внутри docker — repo target/ не нужен, плюс размер).
**/target/
**/.m2/
*.iml
*.bak
*.log
# Frontend в backend image не нужен и весит больше всего остального.
# Каждый из 3 backend Dockerfile'ов делает только Java build.
ordinis-admin-ui/
# Ordinis bench — JMH benchmarks, не shippable artifact.
ordinis-bench/
# Documentation builds
docs/_dist/
docs/node_modules/
docs-internal/
# Top-level non-build files
README.md
docker-compose.yml
*.md
+11 -14
View File
@@ -1,19 +1,16 @@
# Multi-stage build для ordinis-app # Multi-stage build для ordinis-app.
#
# COPY . ./ + root .dockerignore: один rule вместо explicit per-module
# list. Когда добавляется новый Maven module в parent pom.xml — Docker
# build автоматически его подхватит, без правки этого файла. Lesson из
# Phase A (notifications module): explicit COPY list пропускал новый
# module → `mvn -am package` падал на parent pom validation.
#
# .dockerignore исключает frontend (admin-ui), bench, docs, target/, .git/,
# IDE metadata — backend image остаётся компактным.
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
WORKDIR /build WORKDIR /build
COPY pom.xml ./ COPY . ./
COPY ordinis-domain ./ordinis-domain
COPY ordinis-auth ./ordinis-auth
COPY ordinis-validation ./ordinis-validation
COPY ordinis-events-api ./ordinis-events-api
COPY ordinis-outbox ./ordinis-outbox
COPY ordinis-rest-api ./ordinis-rest-api
COPY ordinis-cuod-bundle ./ordinis-cuod-bundle
COPY ordinis-read-api ./ordinis-read-api
COPY ordinis-projection-writer ./ordinis-projection-writer
COPY ordinis-migrations ./ordinis-migrations
COPY ordinis-notifications ./ordinis-notifications
COPY ordinis-app ./ordinis-app
RUN mvn -B -pl ordinis-app -am package -DskipTests RUN mvn -B -pl ordinis-app -am package -DskipTests
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre FROM repo.nstart.cloud/library/eclipse-temurin:21-jre
+4 -13
View File
@@ -1,18 +1,9 @@
# Multi-stage build для ordinis-projection-writer. См. ordinis-app/Dockerfile
# для rationale `COPY . ./` + `.dockerignore` подхода (single-rule,
# future-proof на новые Maven modules).
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
WORKDIR /build WORKDIR /build
COPY pom.xml ./ COPY . ./
COPY ordinis-domain ./ordinis-domain
COPY ordinis-auth ./ordinis-auth
COPY ordinis-validation ./ordinis-validation
COPY ordinis-events-api ./ordinis-events-api
COPY ordinis-outbox ./ordinis-outbox
COPY ordinis-rest-api ./ordinis-rest-api
COPY ordinis-cuod-bundle ./ordinis-cuod-bundle
COPY ordinis-app ./ordinis-app
COPY ordinis-read-api ./ordinis-read-api
COPY ordinis-migrations ./ordinis-migrations
COPY ordinis-notifications ./ordinis-notifications
COPY ordinis-projection-writer ./ordinis-projection-writer
RUN mvn -B -pl ordinis-projection-writer -am package -DskipTests RUN mvn -B -pl ordinis-projection-writer -am package -DskipTests
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre FROM repo.nstart.cloud/library/eclipse-temurin:21-jre
+4 -13
View File
@@ -1,18 +1,9 @@
# Multi-stage build для ordinis-read-api. См. ordinis-app/Dockerfile для
# rationale `COPY . ./` + `.dockerignore` подхода (single-rule, future-proof
# на новые Maven modules).
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
WORKDIR /build WORKDIR /build
COPY pom.xml ./ COPY . ./
COPY ordinis-domain ./ordinis-domain
COPY ordinis-auth ./ordinis-auth
COPY ordinis-validation ./ordinis-validation
COPY ordinis-events-api ./ordinis-events-api
COPY ordinis-outbox ./ordinis-outbox
COPY ordinis-rest-api ./ordinis-rest-api
COPY ordinis-cuod-bundle ./ordinis-cuod-bundle
COPY ordinis-app ./ordinis-app
COPY ordinis-projection-writer ./ordinis-projection-writer
COPY ordinis-migrations ./ordinis-migrations
COPY ordinis-notifications ./ordinis-notifications
COPY ordinis-read-api ./ordinis-read-api
RUN mvn -B -pl ordinis-read-api -am package -DskipTests RUN mvn -B -pl ordinis-read-api -am package -DskipTests
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre FROM repo.nstart.cloud/library/eclipse-temurin:21-jre