Files
demo-monolith/docker-compose.yml
T
Liosha84andClaude Opus 5.5 3f5a6c26bb feat: finish demo — Angular 22 + Material UI, role management, schema and Docker cleanup
Frontend
- Upgrade Angular 19 -> 22 (TypeScript 6, new control flow), drop unused
  packages (bootstrap, jquery, popper, ng-bootstrap, webpack)
- Move the UI to Angular Material: toolbar with user menu, tutorials list,
  add/edit forms, admin users table with role editing dialog, profile,
  home page with published tutorials, registration form, login dialog
- Guard routes: login required for add/edit/profile, admin role for /admin
- Remove the /login, Moderator and User pages, event bus, auth interceptor
  and other dead code

Backend
- Add PUT /api/users/{id}/roles (admin only) that keeps at least one admin
  and does not let an admin drop their own admin role
- Tighten security: read tutorials publicly, change them only when logged
  in, users/roles API for admins only; hide password hashes in JSON
- Remove unused Settings and Test endpoints, DTO mappers, commented code
- Flyway V2 aligns the schema with the entities (bigint ids, tutorials PK,
  identity ids); Hibernate now runs with ddl-auto: validate

Docker
- Three-stage Dockerfile (Node build, Gradle build, JRE runtime) with
  layer caching, non-root user and healthcheck; add .dockerignore
- docker-compose waits for a healthy Postgres, always rebuilds the image,
  no longer mounts the Docker socket

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 19:03:58 +02:00

46 lines
1.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
demo-monolith-postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: jambotron_monolith
POSTGRES_USER: jambotron_admin
POSTGRES_PASSWORD: jambo_secret_pass
healthcheck:
test: ["CMD-SHELL", "pg_isready -U jambotron_admin -d jambotron_monolith"]
interval: 3s
timeout: 3s
retries: 5
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- demo-monolith
app:
build: .
# Собирать образ при каждом `docker compose up`, иначе compose молча запускает старый образ
pull_policy: build
restart: unless-stopped
# Ждём, пока база начнёт принимать подключения, иначе Flyway падает на старте
depends_on:
demo-monolith-postgres:
condition: service_healthy
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://demo-monolith-postgres:5432/jambotron_monolith
SPRING_DATASOURCE_USERNAME: jambotron_admin
SPRING_DATASOURCE_PASSWORD: jambo_secret_pass
# В application.yaml Flyway настроен на localhost отдельно от datasource — переопределяем
SPRING_FLYWAY_URL: jdbc:postgresql://demo-monolith-postgres:5432/jambotron_monolith?options=-c%20timezone=UTC
SPRING_FLYWAY_USER: jambotron_admin
SPRING_FLYWAY_PASSWORD: jambo_secret_pass
networks:
- demo-monolith
volumes:
postgres_data:
networks:
demo-monolith: