diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5bd1cfd --- /dev/null +++ b/.dockerignore @@ -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: добавили ordinis-notifications +# в 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 diff --git a/ordinis-app/Dockerfile b/ordinis-app/Dockerfile index da6ef4b..0391cf5 100644 --- a/ordinis-app/Dockerfile +++ b/ordinis-app/Dockerfile @@ -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 WORKDIR /build -COPY pom.xml ./ -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 +COPY . ./ RUN mvn -B -pl ordinis-app -am package -DskipTests FROM repo.nstart.cloud/library/eclipse-temurin:21-jre diff --git a/ordinis-projection-writer/Dockerfile b/ordinis-projection-writer/Dockerfile index d44707f..fc15810 100644 --- a/ordinis-projection-writer/Dockerfile +++ b/ordinis-projection-writer/Dockerfile @@ -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 WORKDIR /build -COPY pom.xml ./ -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 +COPY . ./ RUN mvn -B -pl ordinis-projection-writer -am package -DskipTests FROM repo.nstart.cloud/library/eclipse-temurin:21-jre diff --git a/ordinis-read-api/Dockerfile b/ordinis-read-api/Dockerfile index 6c32ff9..8ae5002 100644 --- a/ordinis-read-api/Dockerfile +++ b/ordinis-read-api/Dockerfile @@ -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 WORKDIR /build -COPY pom.xml ./ -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 +COPY . ./ RUN mvn -B -pl ordinis-read-api -am package -DskipTests FROM repo.nstart.cloud/library/eclipse-temurin:21-jre