meldestelle/dc-backend.yaml
Stefan Mogeritsch 09b0b1a462 infra: clean up Keycloak configuration, enforce consistency in .env, and improve health checks
Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
2026-03-06 11:23:24 +01:00

154 lines
5.9 KiB
YAML

name: "${PROJECT_NAME:-meldestelle}"
services:
# ==========================================
# 2. BACKEND SERVICES (Spring Boot)
# ==========================================
# --- API-GATEWAY: Spring Cloud Gateway ---
api-gateway:
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/meldestelle-gateway:${DOCKER_TAG:-latest}"
build:
context: .
dockerfile: backend/infrastructure/gateway/Dockerfile
args:
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.3.1}"
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
BUILD_DATE: "${DOCKER_BUILD_DATE}"
labels:
- "org.opencontainers.image.created=${DOCKER_BUILD_DATE}"
container_name: "${PROJECT_NAME:-meldestelle}-gateway"
restart: no
ports:
- "${GATEWAY_PORT:-8081:8081}"
- "${GATEWAY_DEBUG_PORT:-5005:5005}"
environment:
SERVER_PORT: "${GATEWAY_SERVER_PORT:-8081}"
SPRING_PROFILES_ACTIVE: "${GATEWAY_SPRING_PROFILES_ACTIVE:-docker}"
DEBUG: "${GATEWAY_DEBUG:-true}"
# --- KEYCLOAK ---
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://localhost:8180/realms/meldestelle}"
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: "${KC_JWK_SET_URI:-http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs}"
# --- CONSUL ---
SPRING_CLOUD_CONSUL_HOST: "${SPRING_CLOUD_CONSUL_HOST:-consul}"
SPRING_CLOUD_CONSUL_PORT: "${SPRING_CLOUD_CONSUL_PORT:-8500}"
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME: "${SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME:-api-gateway}"
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS:-true}"
# --- POSTGRES ---
SPRING_DATASOURCE_URL: "${POSTGRES_DB_URL:-jdbc:postgresql://postgres:5432/pg-meldestelle-db}"
SPRING_DATASOURCE_USERNAME: "${POSTGRES_USER:-pg-user}"
SPRING_DATASOURCE_PASSWORD: "${POSTGRES_PASSWORD:-pg-password}"
# --- VALKEY (formerly Redis) ---
SPRING_DATA_VALKEY_HOST: "${VALKEY_SERVER_HOSTNAME:-valkey}"
SPRING_DATA_VALKEY_PORT: "${VALKEY_SERVER_PORT:-6379}"
SPRING_DATA_VALKEY_PASSWORD: "${VALKEY_PASSWORD:-}"
SPRING_DATA_VALKEY_CONNECT_TIMEOUT: "${VALKEY_SERVER_CONNECT_TIMEOUT:-5s}"
# --- LOGGING ---
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_CLOUD_GATEWAY: "DEBUG"
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY: "DEBUG"
# --- ZIPKIN ---
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT: "${ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}"
MANAGEMENT_TRACING_SAMPLING_PROBABILITY: "${ZIPKIN_SAMPLING_PROBABILITY:-1.0}"
# --- SERVICE URLs ---
PING_SERVICE_URL: "http://ping-service:8082"
depends_on:
postgres:
condition: "service_healthy"
keycloak:
condition: "service_started"
consul:
condition: "service_healthy"
valkey:
condition: "service_healthy"
zipkin:
condition: "service_started"
networks:
meldestelle-network:
aliases:
- "api-gateway"
profiles: [ "backend", "all" ]
volumes:
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
# --- MICROSERVICE: Ping Service ---
ping-service:
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/meldestelle-ping-service:${DOCKER_TAG:-latest}"
build:
context: .
dockerfile: backend/services/ping/Dockerfile
args:
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.3.1}"
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
BUILD_DATE: "${DOCKER_BUILD_DATE}"
labels:
- "org.opencontainers.image.created=${DOCKER_BUILD_DATE}"
container_name: "${PROJECT_NAME:-meldestelle}-ping-service"
restart: no
ports:
- "${PING_PORT:-8082:8082}"
- "${PING_DEBUG_PORT:-5006:5006}"
environment:
SPRING_PROFILES_ACTIVE: "${PING_SPRING_PROFILES_ACTIVE:-docker}"
DEBUG: "${PING_DEBUG:-true}"
SERVER_PORT: "${PING_SERVER_PORT:-8082}"
# --- KEYCLOAK ---
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://localhost:8180/realms/meldestelle}"
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: "${KC_JWK_SET_URI:-http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs}"
# --- CONSUL ---
SPRING_CLOUD_CONSUL_HOST: "${CONSUL_HOST:-consul}"
SPRING_CLOUD_CONSUL_PORT: "${CONSUL_HTTP_PORT:-8500}"
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME: "${PING_SERVICE_NAME:-ping-service}"
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${PING_CONSUL_PREFER_IP:-true}"
# - DATENBANK VERBINDUNG -
SPRING_DATASOURCE_URL: "${POSTGRES_DB_URL:-jdbc:postgresql://postgres:5432/pg-meldestelle-db}"
SPRING_DATASOURCE_USERNAME: "${POSTGRES_USER:-pg-user}"
SPRING_DATASOURCE_PASSWORD: "${POSTGRES_PASSWORD:-pg-password}"
# --- VALKEY (formerly Redis) ---
SPRING_DATA_VALKEY_HOST: "${VALKEY_SERVER_HOSTNAME:-valkey}"
SPRING_DATA_VALKEY_PORT: "${VALKEY_SERVER_PORT:-6379}"
SPRING_DATA_VALKEY_PASSWORD: "${VALKEY_PASSWORD:-}"
SPRING_DATA_VALKEY_CONNECT_TIMEOUT: "${VALKEY_SERVER_CONNECT_TIMEOUT:-5s}"
# --- ZIPKIN ---
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT: "${ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}"
MANAGEMENT_TRACING_SAMPLING_PROBABILITY: "${ZIPKIN_SAMPLING_PROBABILITY:-1.0}"
depends_on:
postgres:
condition: "service_healthy"
keycloak:
condition: "service_started"
consul:
condition: "service_healthy"
valkey:
condition: "service_healthy"
zipkin:
condition: "service_started"
networks:
meldestelle-network:
aliases:
- "ping-service"
profiles: [ "backend", "all" ]
volumes:
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
networks:
meldestelle-network:
driver: bridge