758 lines
30 KiB
YAML
758 lines
30 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}/api-gateway:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/infrastructure/gateway/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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: unless-stopped
|
|
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://keycloak:8080/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"
|
|
MASTERDATA_SERVICE_URL: "http://masterdata-service:8086"
|
|
EVENTS_SERVICE_URL: "http://events-service:8085"
|
|
MAIL_SERVICE_URL: "http://mail-service:8083"
|
|
ZNS_IMPORT_SERVICE_URL: "http://zns-import-service:8095"
|
|
RESULTS_SERVICE_URL: "http://results-service:8088"
|
|
BILLING_SERVICE_URL: "http://billing-service:8087"
|
|
|
|
depends_on:
|
|
postgres:
|
|
condition: "service_healthy"
|
|
keycloak:
|
|
condition: "service_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
# mail-service:
|
|
# condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8081/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
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}/ping-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/ping/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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: unless-stopped
|
|
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://keycloak:8080/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_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8082/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "ping-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Masterdata Service ---
|
|
masterdata-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/masterdata-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/masterdata/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-masterdata-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MASTERDATA_PORT:-8086:8086}"
|
|
- "${MASTERDATA_DEBUG_PORT:-5007:5007}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${MASTERDATA_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${MASTERDATA_DEBUG:-true}"
|
|
SERVER_PORT: "${MASTERDATA_SERVER_PORT:-8086}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${MASTERDATA_SERVICE_NAME:-masterdata-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${MASTERDATA_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_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8086/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "masterdata-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Events Service ---
|
|
events-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/events-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/events/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-events-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${EVENTS_PORT:-8085:8085}"
|
|
- "${EVENTS_DEBUG_PORT:-5008:5008}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${EVENTS_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${EVENTS_DEBUG:-true}"
|
|
SERVER_PORT: "${EVENTS_SERVER_PORT:-8085}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${EVENTS_SERVICE_NAME:-events-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${EVENTS_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_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8085/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "events-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: ZNS Import Service ---
|
|
zns-import-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/zns-import-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/zns-import/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-zns-import-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${ZNS_IMPORT_PORT:-8095:8095}"
|
|
- "${ZNS_IMPORT_DEBUG_PORT:-5009:5009}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${ZNS_IMPORT_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${ZNS_IMPORT_DEBUG:-true}"
|
|
SERVER_PORT: "${ZNS_IMPORT_SERVER_PORT:-8095}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${ZNS_IMPORT_SERVICE_NAME:-zns-import-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${ZNS_IMPORT_CONSUL_PREFER_IP:-true}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_HOSTNAME: "${ZNS_IMPORT_HOSTNAME:-zns-import-service}"
|
|
|
|
# - 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_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8095/actuator/health/readiness" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "zns-import-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Results Service ---
|
|
results-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/results-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/results/results-service/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-results-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${RESULTS_PORT:-8088:8088}"
|
|
- "${RESULTS_DEBUG_PORT:-5010:5010}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${RESULTS_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${RESULTS_DEBUG:-true}"
|
|
SERVER_PORT: "${RESULTS_SERVER_PORT:-8088}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${RESULTS_SERVICE_NAME:-results-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${RESULTS_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_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--spider", "-q", "http://localhost:8088/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "results-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Billing Service ---
|
|
billing-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/billing-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/billing/billing-service/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-billing-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${BILLING_PORT:-8087:8087}"
|
|
- "${BILLING_DEBUG_PORT:-5012:5012}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${BILLING_SPRING_PROFILES_ACTIVE:-docker}"
|
|
SPRING_APPLICATION_NAME: "${BILLING_SERVICE_NAME:-billing-service}"
|
|
DEBUG: "${BILLING_DEBUG:-true}"
|
|
SERVER_PORT: "${BILLING_SERVER_PORT:-8087}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${BILLING_SERVICE_NAME:-billing-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${BILLING_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 ---
|
|
SPRING_DATA_VALKEY_HOST: "${VALKEY_SERVER_HOSTNAME:-valkey}"
|
|
SPRING_DATA_VALKEY_PORT: "${VALKEY_SERVER_PORT:-6379}"
|
|
|
|
# --- ZIPKIN ---
|
|
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT: "${ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}"
|
|
|
|
depends_on:
|
|
postgres:
|
|
condition: "service_healthy"
|
|
keycloak:
|
|
condition: "service_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--spider", "-q", "http://localhost:8087/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "billing-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Mail Service ---
|
|
mail-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/mail-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/mail/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-mail-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MAIL_PORT:-8083:8083}"
|
|
- "${MAIL_DEBUG_PORT:-5014:5014}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${MAIL_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${MAIL_DEBUG:-true}"
|
|
SERVER_PORT: "${MAIL_SERVER_PORT:-8083}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${MAIL_SERVICE_NAME:-mail-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${MAIL_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}"
|
|
|
|
# --- MAIL CONFIG (SMTP) ---
|
|
SPRING_MAIL_HOST: "${MAIL_SMTP_HOST:-smtp.mo-code.at}"
|
|
SPRING_MAIL_PORT: "${MAIL_SMTP_PORT:-587}"
|
|
SPRING_MAIL_USERNAME: "${MAIL_SMTP_USER:-online-nennen@mo-code.at}"
|
|
SPRING_MAIL_PASSWORD: "${MAIL_SMTP_PASSWORD:-secret}"
|
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH: "true"
|
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE: "true"
|
|
|
|
# --- ZIPKIN ---
|
|
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT: "${ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}"
|
|
|
|
depends_on:
|
|
postgres:
|
|
condition: "service_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--spider", "-q", "http://localhost:8083/actuator/health/readiness" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "mail-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Scheduling Service ---
|
|
scheduling-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/scheduling-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/scheduling/scheduling-service/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-scheduling-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${SCHEDULING_PORT:-8084:8084}"
|
|
- "${SCHEDULING_DEBUG_PORT:-5013:5013}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${SCHEDULING_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${SCHEDULING_DEBUG:-true}"
|
|
SERVER_PORT: "${SCHEDULING_SERVER_PORT:-8084}"
|
|
SPRING_APPLICATION_NAME: "${SCHEDULING_SERVICE_NAME:-scheduling-service}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/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: "${SCHEDULING_SERVICE_NAME:-scheduling-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${SCHEDULING_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 ---
|
|
SPRING_DATA_VALKEY_HOST: "${VALKEY_SERVER_HOSTNAME:-valkey}"
|
|
SPRING_DATA_VALKEY_PORT: "${VALKEY_SERVER_PORT:-6379}"
|
|
|
|
# --- ZIPKIN ---
|
|
MANAGEMENT_ZIPKIN_TRACING_ENDPOINT: "${ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}"
|
|
|
|
depends_on:
|
|
postgres:
|
|
condition: "service_healthy"
|
|
keycloak:
|
|
condition: "service_healthy"
|
|
consul:
|
|
condition: "service_healthy"
|
|
valkey:
|
|
condition: "service_healthy"
|
|
zipkin:
|
|
condition: "service_healthy"
|
|
|
|
healthcheck:
|
|
test: [ "CMD", "curl", "-f", "http://localhost:8084/actuator/health" ]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 40s
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "scheduling-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
# --- MICROSERVICE: Series Service ---
|
|
series-service:
|
|
image: "${DOCKER_REGISTRY:-git.mo-code.at/mo-code}/series-service:${DOCKER_TAG:-latest}"
|
|
build:
|
|
context: .
|
|
dockerfile: backend/services/series/series-service/Dockerfile
|
|
args:
|
|
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.4.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}-series-service"
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${SERIES_PORT:-8089:8089}"
|
|
- "${SERIES_DEBUG_PORT:-5011:5011}"
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: "${SERIES_SPRING_PROFILES_ACTIVE:-docker}"
|
|
DEBUG: "${SERIES_DEBUG:-true}"
|
|
SERVER_PORT: "${SERIES_SERVER_PORT:-8089}"
|
|
SPRING_APPLICATION_NAME: "${SERIES_SERVICE_NAME:-series-service}"
|
|
|
|
# --- KEYCLOAK ---
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: "${KC_ISSUER_URI:-http://keycloak:8080/realms/meldestelle}"
|
|
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: "${KC_JWK_SET_URI:-http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs}"
|
|
|
|
# --- DATASOURCE ---
|
|
SPRING_DATASOURCE_URL: "${DATASOURCE_URL:-jdbc:postgresql://postgres:5432/pg-meldestelle-db}"
|
|
SPRING_DATASOURCE_USERNAME: "${DATASOURCE_USERNAME:-meldestelle}"
|
|
SPRING_DATASOURCE_PASSWORD: "${DATASOURCE_PASSWORD:-meldestelle}"
|
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: "org.postgresql.Driver"
|
|
|
|
# --- CONSUL ---
|
|
SPRING_CLOUD_CONSUL_HOST: "${CONSUL_HOST:-consul}"
|
|
SPRING_CLOUD_CONSUL_PORT: "${CONSUL_HTTP_PORT:-8500}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME: "${SERIES_SERVICE_NAME:-series-service}"
|
|
SPRING_CLOUD_CONSUL_DISCOVERY_PREFER_IP_ADDRESS: "${SERIES_CONSUL_PREFER_IP:-true}"
|
|
|
|
# --- 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
|
|
consul:
|
|
condition: service_healthy
|
|
keycloak:
|
|
condition: service_healthy
|
|
valkey:
|
|
condition: service_healthy
|
|
zipkin:
|
|
condition: service_healthy
|
|
networks:
|
|
meldestelle-network:
|
|
aliases:
|
|
- "series-service"
|
|
profiles: [ "backend", "all" ]
|
|
volumes:
|
|
- ./config/app/base-application.yaml:/workspace/config/application.yml:Z
|
|
|
|
networks:
|
|
meldestelle-network:
|
|
driver: bridge
|