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}" SPRING_CLOUD_CONSUL_DISCOVERY_HOSTNAME: "${PING_SERVICE_HOSTNAME:-ping-service}" SPRING_CLOUD_CONSUL_DISCOVERY_HEALTH_CHECK_PATH: "/actuator/health" # - 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