# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

# You can replace and test a more recent version of docker compose
version: '3.7'
services:
  kafka:
    image: 'bitnami/kafka:3.5.1-debian-11-r7'
    ports:
      - '9092:9092'
    env_file:
      - ./config/docker/env/kafka-server.env

  db:
    extends:
      file: ./config/docker/compose/postgresql.yml
      service: postgresql

  fineract-manager:
    extends:
      file: ./config/docker/compose/fineract.yml
      service: fineract
    ports:
      - "8443:8443"
    depends_on:
      db:
        condition: service_healthy
    env_file:
      - ./config/docker/env/fineract-postgresql.env
      - ./config/docker/env/fineract-manager.env
      - ./config/docker/env/kafka-client.env

  fineract-worker:
    extends:
      file: ./config/docker/compose/fineract.yml
      service: fineract
    deploy:
      mode: replicated
      replicas: 2
    ports:
      - "8444-8445:8443"
    depends_on:
      db:
        condition: service_healthy
    env_file:
      - ./config/docker/env/fineract-postgresql.env
      - ./config/docker/env/fineract-worker.env
      - ./config/docker/env/kafka-client.env
