refactoring: Docker-Dateien Api-Gateway
This commit is contained in:
@@ -34,14 +34,14 @@ PGADMIN_EMAIL=user@domain.com
|
|||||||
PGADMIN_PASSWORD=strong-password
|
PGADMIN_PASSWORD=strong-password
|
||||||
PGADMIN_PORT=8888:80
|
PGADMIN_PORT=8888:80
|
||||||
|
|
||||||
|
# --- PROMETHEUS (Metriken) ---
|
||||||
|
PROMETHEUS_PORT=9090:9090
|
||||||
|
|
||||||
# --- GRAFANA (Monitoring GUI) ---
|
# --- GRAFANA (Monitoring GUI) ---
|
||||||
GF_ADMIN_USER=gf-admin
|
GF_ADMIN_USER=gf-admin
|
||||||
GF_ADMIN_PASSWORD=gf-password
|
GF_ADMIN_PASSWORD=gf-password
|
||||||
GF_PORT=3000:3000
|
GF_PORT=3000:3000
|
||||||
|
|
||||||
# --- PROMETHEUS (Metriken) ---
|
|
||||||
PROMETHEUS_PORT=9090:9090
|
|
||||||
|
|
||||||
# --- SERVICE DISCOVERY (Consul) ---
|
# --- SERVICE DISCOVERY (Consul) ---
|
||||||
CONSUL_PORT=8500:8500
|
CONSUL_PORT=8500:8500
|
||||||
|
|
||||||
@@ -50,3 +50,6 @@ CONSUL_PORT=8500:8500
|
|||||||
GATEWAY_PORT=8081
|
GATEWAY_PORT=8081
|
||||||
# Debug Port für IntelliJ (Remote JVM Debug)
|
# Debug Port für IntelliJ (Remote JVM Debug)
|
||||||
GATEWAY_DEBUG_PORT=5005
|
GATEWAY_DEBUG_PORT=5005
|
||||||
|
|
||||||
|
# --- MICROSERVICES ---
|
||||||
|
PING_SERVICE_PORT=8082:8082
|
||||||
|
|||||||
@@ -202,6 +202,48 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- meldestelle-network
|
- meldestelle-network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# MICROSERVICES
|
||||||
|
# ==========================================
|
||||||
|
ping-service:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: dockerfiles/services/ping-service/Dockerfile
|
||||||
|
args:
|
||||||
|
GRADLE_VERSION: 9.1.0
|
||||||
|
JAVA_VERSION: 21
|
||||||
|
VERSION: 1.0.0
|
||||||
|
BUILD_DATE: "2025-11-20"
|
||||||
|
container_name: ${COMPOSE_PROJECT_NAME}-ping-service
|
||||||
|
restart: no # "${RESTART_POLICY:-unless-stopped}"
|
||||||
|
ports:
|
||||||
|
- "${PING_SERVICE_PORT}"
|
||||||
|
- "5006:5005" # Debug Port
|
||||||
|
environment:
|
||||||
|
SPRING_PROFILES_ACTIVE: docker
|
||||||
|
DEBUG: "true"
|
||||||
|
SERVER_PORT: 8082
|
||||||
|
|
||||||
|
# --- CONSUL ---
|
||||||
|
SPRING_CLOUD_CONSUL_HOST: consul
|
||||||
|
SPRING_CLOUD_CONSUL_PORT: 8500
|
||||||
|
SPRING_CLOUD_CONSUL_DISCOVERY_HOSTNAME: ping-service
|
||||||
|
|
||||||
|
# --- DATENBANK VERBINDUNG (Das hat gefehlt!) ---
|
||||||
|
# Wir nutzen die Container-Namen aus deiner .env Variable
|
||||||
|
SPRING_DATASOURCE_URL: jdbc:postgresql://${COMPOSE_PROJECT_NAME}-postgres:5432/${POSTGRES_DB}
|
||||||
|
SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
|
||||||
|
SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
# WICHTIG: Wir wollen nur validieren, nichts erstellen.
|
||||||
|
SPRING_JPA_HIBERNATE_DDL_AUTO: validate
|
||||||
|
|
||||||
|
# --- REDIS (DAS HAT GEFEHLT!) ---
|
||||||
|
# Wir nutzen den Service-Namen, genau wie bei Postgres
|
||||||
|
SPRING_DATA_REDIS_HOST: ${COMPOSE_PROJECT_NAME}-redis
|
||||||
|
SPRING_DATA_REDIS_PORT: 6379
|
||||||
|
networks:
|
||||||
|
- meldestelle-network
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres-data:
|
postgres-data:
|
||||||
pgadmin-data:
|
pgadmin-data:
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ dependencies {
|
|||||||
implementation(libs.bundles.logging)
|
implementation(libs.bundles.logging)
|
||||||
implementation(libs.bundles.jackson.kotlin)
|
implementation(libs.bundles.jackson.kotlin)
|
||||||
|
|
||||||
|
// WICHTIG: PostgreSQL Treiber hinzufügen!
|
||||||
|
implementation(libs.postgresql.driver)
|
||||||
|
|
||||||
// === Test Dependencies ===
|
// === Test Dependencies ===
|
||||||
testImplementation(projects.platform.platformTesting)
|
testImplementation(projects.platform.platformTesting)
|
||||||
testImplementation(libs.bundles.testing.jvm)
|
testImplementation(libs.bundles.testing.jvm)
|
||||||
|
|||||||
+4
-4
@@ -24,6 +24,10 @@ class GatewayHealthIndicator(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val CRITICAL_SERVICES = setOf(
|
private val CRITICAL_SERVICES = setOf(
|
||||||
|
"ping-service"
|
||||||
|
)
|
||||||
|
|
||||||
|
private val OPTIONAL_SERVICES = setOf(
|
||||||
"members-service",
|
"members-service",
|
||||||
"horses-service",
|
"horses-service",
|
||||||
"events-service",
|
"events-service",
|
||||||
@@ -31,10 +35,6 @@ class GatewayHealthIndicator(
|
|||||||
"auth-service"
|
"auth-service"
|
||||||
)
|
)
|
||||||
|
|
||||||
private val OPTIONAL_SERVICES = setOf(
|
|
||||||
"ping-service"
|
|
||||||
)
|
|
||||||
|
|
||||||
private val HEALTH_CHECK_TIMEOUT = Duration.ofSeconds(5)
|
private val HEALTH_CHECK_TIMEOUT = Duration.ofSeconds(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -125,7 +125,8 @@ data class GatewaySecurityProperties(
|
|||||||
"/actuator/**",
|
"/actuator/**",
|
||||||
"/webjars/**",
|
"/webjars/**",
|
||||||
"/v3/api-docs/**",
|
"/v3/api-docs/**",
|
||||||
"/api/auth/**" // Alle Auth-Endpunkte
|
"/api/auth/**", // Alle Auth-Endpunkte
|
||||||
|
"/api/ping/**"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,10 @@ spring:
|
|||||||
name: Cache-Control
|
name: Cache-Control
|
||||||
value: no-cache, no-store, must-revalidate
|
value: no-cache, no-store, must-revalidate
|
||||||
routes:
|
routes:
|
||||||
|
|
||||||
|
# ==============================================================
|
||||||
|
# --- Gateway-Info-Route (optional) ---
|
||||||
|
# ==============================================================
|
||||||
- id: gateway-info-route
|
- id: gateway-info-route
|
||||||
uri: http://localhost:${server.port}
|
uri: http://localhost:${server.port}
|
||||||
predicates:
|
predicates:
|
||||||
@@ -81,56 +85,80 @@ spring:
|
|||||||
filters:
|
filters:
|
||||||
- SetStatus=200
|
- SetStatus=200
|
||||||
- SetResponseHeader=Content-Type,application/json
|
- SetResponseHeader=Content-Type,application/json
|
||||||
- id: members-service-route
|
|
||||||
uri: lb://members-service
|
# ==============================================================
|
||||||
predicates:
|
# --- Members-Service-Integration (optional) ---
|
||||||
- Path=/api/members/**
|
# ==============================================================
|
||||||
filters:
|
# - id: members-service-route
|
||||||
- StripPrefix=1
|
# uri: lb://members-service
|
||||||
- name: CircuitBreaker
|
# predicates:
|
||||||
args:
|
# - Path=/api/members/**
|
||||||
name: membersCircuitBreaker
|
# filters:
|
||||||
fallbackUri: forward:/fallback/members
|
# - StripPrefix=1
|
||||||
- id: horses-service-route
|
# - name: CircuitBreaker
|
||||||
uri: lb://horses-service
|
# args:
|
||||||
predicates:
|
# name: membersCircuitBreaker
|
||||||
- Path=/api/horses/**
|
# fallbackUri: forward:/fallback/members
|
||||||
filters:
|
|
||||||
- StripPrefix=1
|
# ==============================================================
|
||||||
- name: CircuitBreaker
|
# --- Horses-Service-Integration (optional) ---
|
||||||
args:
|
# ==============================================================
|
||||||
name: horsesCircuitBreaker
|
# - id: horses-service-route
|
||||||
fallbackUri: forward:/fallback/horses
|
# uri: lb://horses-service
|
||||||
- id: events-service-route
|
# predicates:
|
||||||
uri: lb://events-service
|
# - Path=/api/horses/**
|
||||||
predicates:
|
# filters:
|
||||||
- Path=/api/events/**
|
# - StripPrefix=1
|
||||||
filters:
|
# - name: CircuitBreaker
|
||||||
- StripPrefix=1
|
# args:
|
||||||
- name: CircuitBreaker
|
# name: horsesCircuitBreaker
|
||||||
args:
|
# fallbackUri: forward:/fallback/horses
|
||||||
name: eventsCircuitBreaker
|
|
||||||
fallbackUri: forward:/fallback/events
|
# ==============================================================
|
||||||
- id: masterdata-service-route
|
# --- Events-Service-Integration (optional) ---
|
||||||
uri: lb://masterdata-service
|
# ==============================================================
|
||||||
predicates:
|
# - id: events-service-route
|
||||||
- Path=/api/masterdata/**
|
# uri: lb://events-service
|
||||||
filters:
|
# predicates:
|
||||||
- StripPrefix=1
|
# - Path=/api/events/**
|
||||||
- name: CircuitBreaker
|
# filters:
|
||||||
args:
|
# - StripPrefix=1
|
||||||
name: masterdataCircuitBreaker
|
# - name: CircuitBreaker
|
||||||
fallbackUri: forward:/fallback/masterdata
|
# args:
|
||||||
- id: auth-service-route
|
# name: eventsCircuitBreaker
|
||||||
uri: lb://auth-service
|
# fallbackUri: forward:/fallback/events
|
||||||
predicates:
|
|
||||||
- Path=/api/auth/**
|
# ==============================================================
|
||||||
filters:
|
# --- Masterdata-Service-Integration (optional) ---
|
||||||
- StripPrefix=1
|
# ==============================================================
|
||||||
- name: CircuitBreaker
|
# - id: masterdata-service-route
|
||||||
args:
|
# uri: lb://masterdata-service
|
||||||
name: authCircuitBreaker
|
# predicates:
|
||||||
fallbackUri: forward:/fallback/auth
|
# - Path=/api/masterdata/**
|
||||||
|
# filters:
|
||||||
|
# - StripPrefix=1
|
||||||
|
# - name: CircuitBreaker
|
||||||
|
# args:
|
||||||
|
# name: masterdataCircuitBreaker
|
||||||
|
# fallbackUri: forward:/fallback/masterdata
|
||||||
|
|
||||||
|
# ==============================================================
|
||||||
|
# --- Auth-Service-Integration (optional) ---
|
||||||
|
# ==============================================================
|
||||||
|
# - id: auth-service-route
|
||||||
|
# uri: lb://auth-service
|
||||||
|
# predicates:
|
||||||
|
# - Path=/api/auth/**
|
||||||
|
# filters:
|
||||||
|
# - StripPrefix=1
|
||||||
|
# - name: CircuitBreaker
|
||||||
|
# args:
|
||||||
|
# name: authCircuitBreaker
|
||||||
|
# fallbackUri: forward:/fallback/auth
|
||||||
|
|
||||||
|
# ==============================================================
|
||||||
|
# --- Ping-Service-Integration (optional) ---
|
||||||
|
# ==============================================================
|
||||||
- id: ping-service-route
|
- id: ping-service-route
|
||||||
uri: lb://ping-service
|
uri: lb://ping-service
|
||||||
predicates:
|
predicates:
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ dependencies {
|
|||||||
// data-jpa, data-redis, micrometer-prometheus, tracing, zipkin
|
// data-jpa, data-redis, micrometer-prometheus, tracing, zipkin
|
||||||
implementation(libs.bundles.spring.boot.service.complete)
|
implementation(libs.bundles.spring.boot.service.complete)
|
||||||
|
|
||||||
|
// Datenbank (PostgresQL) Driver
|
||||||
|
implementation(libs.postgresql.driver)
|
||||||
|
|
||||||
|
// Web-Server (Tomcat) explizit hinzufügen!
|
||||||
|
implementation(libs.spring.boot.starter.web)
|
||||||
|
|
||||||
// Jackson Kotlin Support Bundle
|
// Jackson Kotlin Support Bundle
|
||||||
implementation(libs.bundles.jackson.kotlin)
|
implementation(libs.bundles.jackson.kotlin)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user