From 4b4f3d2bfcf85768b3d8116809a5f19751cd12aa Mon Sep 17 00:00:00 2001 From: igorsatsyuk Date: Mon, 6 Apr 2026 08:18:07 +0300 Subject: [PATCH 1/2] chore: split docker compose into base plus dev/prod overrides --- README.md | 48 +++++++++++++++++++++++++++++++++------- docker-compose.dev.yaml | 28 +++++++++++++++++++++++ docker-compose.prod.yaml | 14 ++++++++++++ docker-compose.yaml | 4 +--- 4 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 docker-compose.dev.yaml create mode 100644 docker-compose.prod.yaml diff --git a/README.md b/README.md index fbd85e8..d58a04f 100644 --- a/README.md +++ b/README.md @@ -71,10 +71,16 @@ Resource server introspection credentials (confidential client in Keycloak): - `KEYCLOAK_RESOURCE_CLIENT_ID` - `KEYCLOAK_RESOURCE_CLIENT_SECRET` -### 1. Start Keycloak (with automatic realm import) +### 1. Compose files layout -```bash -docker compose up -d +- `docker-compose.yaml` - shared stack (databases, Keycloak, observability, common `jwt-demo` settings) +- `docker-compose.dev.yaml` - dev override for `jwt-demo` (Maven container + source mount + watch) +- `docker-compose.prod.yaml` - prod override for `jwt-demo` (image build from `Dockerfile`) + +### 2. Start in DEV mode (auto-restart on code changes) + +```pwsh +docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up --build --watch ``` Keycloak automatically imports: @@ -85,18 +91,44 @@ Keycloak automatically imports: - client `spring-app` - protocol mappers (roles → access_token) -Keycloak UI: +### 3. Start in PROD mode -``` -http://localhost:8080 +```pwsh +docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d --build ``` -### 2. Start Spring Boot +### 4. Alternative local run (without app container) -```bash +```pwsh +docker compose up -d postgres postgres-app keycloak +``` + +```pwsh mvn spring-boot:run ``` +### 5. Stop and cleanup + +DEV mode: + +```pwsh +docker compose -f docker-compose.yaml -f docker-compose.dev.yaml down +docker compose -f docker-compose.yaml -f docker-compose.dev.yaml down -v +``` + +PROD mode: + +```pwsh +docker compose -f docker-compose.yaml -f docker-compose.prod.yaml down +docker compose -f docker-compose.yaml -f docker-compose.prod.yaml down -v +``` + +Keycloak UI: + +``` +http://localhost:8080 +``` + Application runs at: ``` diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml new file mode 100644 index 0000000..4ebea15 --- /dev/null +++ b/docker-compose.dev.yaml @@ -0,0 +1,28 @@ +version: "3.9" + +services: + jwt-demo: + build: null + image: maven:3.9-eclipse-temurin-25 + container_name: jwt-demo-dev + working_dir: /workspace + command: mvn -DskipTests spring-boot:run + environment: + SPRING_PROFILES_ACTIVE: dev + OTEL_RESOURCE_ATTRIBUTES: service.name=jwt-demo,service.namespace=jwt-demo,deployment.environment=dev + volumes: + - ./:/workspace + - maven-cache:/root/.m2 + develop: + watch: + - action: sync+restart + path: ./src + target: /workspace/src + - action: rebuild + path: ./pom.xml + +volumes: + maven-cache: + + + diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml new file mode 100644 index 0000000..56fbadb --- /dev/null +++ b/docker-compose.prod.yaml @@ -0,0 +1,14 @@ +version: "3.9" + +services: + jwt-demo: + build: + context: . + dockerfile: Dockerfile + container_name: jwt-demo + restart: unless-stopped + environment: + SPRING_PROFILES_ACTIVE: prod + OTEL_RESOURCE_ATTRIBUTES: service.name=jwt-demo,service.namespace=jwt-demo,deployment.environment=prod + + diff --git a/docker-compose.yaml b/docker-compose.yaml index 4453b79..d4e48d8 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -65,10 +65,8 @@ services: ports: - "8081:8081" environment: - SPRING_PROFILES_ACTIVE: prod + SPRING_PROFILES_ACTIVE: local KEYCLOAK_AUTH_SERVER_URL: http://keycloak:8080 - - # 👉 Добавляем параметры подключения к новой БД SPRING_DATASOURCE_URL: jdbc:postgresql://postgres-app:5432/appdb SPRING_DATASOURCE_USERNAME: app SPRING_DATASOURCE_PASSWORD: ${APP_DB_PASSWORD} From 3fd732d8120c0fd95e8f2274970574fb604e92ac Mon Sep 17 00:00:00 2001 From: igorsatsyuk Date: Mon, 6 Apr 2026 08:29:07 +0300 Subject: [PATCH 2/2] fix: remove build null override in dev compose --- docker-compose.dev.yaml | 1 - docker-compose.yaml | 3 --- 2 files changed, 4 deletions(-) diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml index 4ebea15..aff1e03 100644 --- a/docker-compose.dev.yaml +++ b/docker-compose.dev.yaml @@ -2,7 +2,6 @@ version: "3.9" services: jwt-demo: - build: null image: maven:3.9-eclipse-temurin-25 container_name: jwt-demo-dev working_dir: /workspace diff --git a/docker-compose.yaml b/docker-compose.yaml index d4e48d8..8827b5b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -58,9 +58,6 @@ services: # JWT DEMO APPLICATION # ------------------------------------------------------------ jwt-demo: - build: - context: . - dockerfile: Dockerfile container_name: jwt-demo ports: - "8081:8081"