feature Keycloak Auth

This commit is contained in:
2025-10-06 01:07:16 +02:00
parent 82b1a2679d
commit a2ffb1e076
24 changed files with 3089 additions and 65 deletions
+65 -65
View File
@@ -45,7 +45,7 @@ services:
# depends_on removed for standalone client deployment
# When using multi-file setup, api-gateway dependency is handled externally
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:4000/health"]
test: [ "CMD", "curl", "--fail", "http://localhost:4000/health" ]
interval: 30s
timeout: 10s
retries: 3
@@ -59,82 +59,82 @@ services:
# ===================================================================
# Desktop Application (Kotlin Desktop + VNC)
# ===================================================================
# desktop-app:
# build:
# context: .
# dockerfile: dockerfiles/clients/desktop-app/Dockerfile
# container_name: meldestelle-desktop-app
# environment:
# # API Configuration - fallback to external gateway if not in same compose network
# API_BASE_URL: http://${GATEWAY_HOST:-api-gateway}:${GATEWAY_PORT:-8081}
# # VNC Configuration
# DISPLAY: ":99"
# VNC_PORT: "5901"
# NOVNC_PORT: "6080"
# # App Information
# APP_TITLE: ${APP_NAME:-Meldestelle}
# APP_VERSION: ${APP_VERSION:-1.0.0}
# ports:
# - "6080:6080" # Web-based VNC (noVNC)
# - "5901:5901" # VNC direct access
# networks:
# - meldestelle-network
# # depends_on removed for standalone client deployment
# # When using multi-file setup, api-gateway dependency is handled externally
# healthcheck:
# test: [ "CMD", "/opt/health-check.sh" ]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 60s
# restart: unless-stopped
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.desktop-app.rule=Host(`localhost`) && PathPrefix(`/desktop`)"
# - "traefik.http.services.desktop-app.loadbalancer.server.port=6080"
# ===================================================================
# Auth Server (Custom Keycloak Extension)
# ===================================================================
# auth-server:
# desktop-app:
# build:
# context: .
# dockerfile: dockerfiles/infrastructure/auth-server/Dockerfile
# args:
# # Global build arguments (from docker/build-args/global.env)
# GRADLE_VERSION: ${DOCKER_GRADLE_VERSION:-9.0.0}
# JAVA_VERSION: ${DOCKER_JAVA_VERSION:-21}
# BUILD_DATE: ${BUILD_DATE}
# VERSION: ${DOCKER_APP_VERSION:-1.0.0}
# # Infrastructure-specific arguments (from docker/build-args/infrastructure.env)
# SPRING_PROFILES_ACTIVE: ${DOCKER_SPRING_PROFILES_DEFAULT:-default}
# container_name: meldestelle-auth-server
# dockerfile: dockerfiles/clients/desktop-app/Dockerfile
# container_name: meldestelle-desktop-app
# environment:
# SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev}
# SERVER_PORT: ${AUTH_SERVICE_PORT:-8087}
# KEYCLOAK_SERVER_URL: http://keycloak:8080
# KEYCLOAK_REALM: meldestelle
# KEYCLOAK_CLIENT_ID: meldestelle-auth-service
# KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET:-auth-service-secret}
# DB_HOST: postgres
# DB_PORT: 5432
# DB_NAME: ${POSTGRES_DB:-meldestelle}
# DB_USER: ${POSTGRES_USER:-meldestelle}
# DB_PASSWORD: ${POSTGRES_PASSWORD:-meldestelle}
# JWT_SECRET: ${JWT_SECRET:-meldestelle-jwt-secret-key-for-development-change-in-production}
# JWT_ISSUER: ${JWT_ISSUER:-meldestelle-api}
# JWT_AUDIENCE: ${JWT_AUDIENCE:-meldestelle-clients}
# # API Configuration - fallback to external gateway if not in same compose network
# API_BASE_URL: http://${GATEWAY_HOST:-api-gateway}:${GATEWAY_PORT:-8081}
# # VNC Configuration
# DISPLAY: ":99"
# VNC_PORT: "5901"
# NOVNC_PORT: "6080"
# # App Information
# APP_TITLE: ${APP_NAME:-Meldestelle}
# APP_VERSION: ${APP_VERSION:-1.0.0}
# ports:
# - "${AUTH_SERVICE_PORT:-8087}:${AUTH_SERVICE_PORT:-8087}"
# - "6080:6080" # Web-based VNC (noVNC)
# - "5901:5901" # VNC direct access
# networks:
# - meldestelle-network
# # depends_on removed for standalone client deployment
# # When using multi-file setup, api-gateway dependency is handled externally
# healthcheck:
# test: ["CMD", "curl", "--fail", "http://localhost:${AUTH_SERVICE_PORT:-8087}/actuator/health"]
# test: [ "CMD", "/opt/health-check.sh" ]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 60s
# restart: unless-stopped
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.desktop-app.rule=Host(`localhost`) && PathPrefix(`/desktop`)"
# - "traefik.http.services.desktop-app.loadbalancer.server.port=6080"
# ===================================================================
# Auth Server (Custom Keycloak Extension)
# ===================================================================
# auth-server:
# build:
# context: .
# dockerfile: dockerfiles/infrastructure/auth-server/Dockerfile
# args:
# # Global build arguments (from docker/build-args/global.env)
# GRADLE_VERSION: ${DOCKER_GRADLE_VERSION:-9.0.0}
# JAVA_VERSION: ${DOCKER_JAVA_VERSION:-21}
# BUILD_DATE: ${BUILD_DATE}
# VERSION: ${DOCKER_APP_VERSION:-1.0.0}
# # Infrastructure-specific arguments (from docker/build-args/infrastructure.env)
# SPRING_PROFILES_ACTIVE: ${DOCKER_SPRING_PROFILES_DEFAULT:-default}
# container_name: meldestelle-auth-server
# environment:
# SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev}
# SERVER_PORT: ${AUTH_SERVICE_PORT:-8087}
# KEYCLOAK_SERVER_URL: http://keycloak:8080
# KEYCLOAK_REALM: meldestelle
# KEYCLOAK_CLIENT_ID: meldestelle-auth-service
# KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET:-auth-service-secret}
# DB_HOST: postgres
# DB_PORT: 5432
# DB_NAME: ${POSTGRES_DB:-meldestelle}
# DB_USER: ${POSTGRES_USER:-meldestelle}
# DB_PASSWORD: ${POSTGRES_PASSWORD:-meldestelle}
# JWT_SECRET: ${JWT_SECRET:-meldestelle-jwt-secret-key-for-development-change-in-production}
# JWT_ISSUER: ${JWT_ISSUER:-meldestelle-api}
# JWT_AUDIENCE: ${JWT_AUDIENCE:-meldestelle-clients}
# ports:
# - "${AUTH_SERVICE_PORT:-8087}:${AUTH_SERVICE_PORT:-8087}"
# networks:
# - meldestelle-network
# healthcheck:
# test: [ "CMD", "curl", "--fail", "http://localhost:${AUTH_SERVICE_PORT:-8087}/actuator/health" ]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 60s
# restart: unless-stopped
# ===================================================================
# Monitoring Server (Custom Grafana Extensions)