| # 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. |
| |
| # The back-office UI alongside a Fineract of its own. |
| # |
| # docker compose -f deploy/docker-compose.yml up --build |
| # open http://localhost:8080 (mifos / password on a fresh database) |
| # |
| # This file previously started the UI alone and pointed it at a public demo instance operated by |
| # someone else, which meant the credentials an operator typed into their first run left the |
| # machine. It now brings up the backend it talks to, so nothing leaves the compose network unless |
| # a deployment deliberately points it elsewhere. |
| # |
| # `version:` is deliberately absent — Compose V2 ignores it and warns about it. |
| |
| services: |
| fineract-db: |
| image: postgres:15 |
| environment: |
| - POSTGRES_USER=postgres |
| # Local development credentials for a database published on no host port. Anything |
| # long-lived belongs in a secret, not here. |
| - POSTGRES_PASSWORD=postgres |
| volumes: |
| - fineract-postgres-data:/var/lib/postgresql/data |
| healthcheck: |
| test: ['CMD-SHELL', 'pg_isready -U postgres'] |
| interval: 5s |
| timeout: 5s |
| retries: 15 |
| networks: |
| - fineract-network |
| |
| fineract: |
| image: apache/fineract:latest |
| depends_on: |
| fineract-db: |
| condition: service_healthy |
| environment: |
| - FINERACT_HIKARI_JDBC_URL=jdbc:postgresql://fineract-db:5432/fineract_tenants |
| - FINERACT_HIKARI_USERNAME=postgres |
| - FINERACT_HIKARI_PASSWORD=postgres |
| - FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineract-db |
| - FINERACT_DEFAULT_TENANTDB_PORT=5432 |
| - FINERACT_DEFAULT_TENANTDB_UID=postgres |
| - FINERACT_DEFAULT_TENANTDB_PWD=postgres |
| - FINERACT_DEFAULT_TENANTDB_NAME=fineract_default |
| - FINERACT_NODE_ID=1 |
| # Not published to the host. The browser reaches Fineract through the UI's own origin, which |
| # is the whole point of the proxy — exposing it here would invite a deployment to bypass that |
| # and then discover the Content-Security-Policy refusing the cross-origin request. |
| expose: |
| - '8443' |
| networks: |
| - fineract-network |
| |
| fineract-backoffice-ui: |
| build: |
| context: .. |
| dockerfile: deploy/Dockerfile |
| image: fineract-backoffice-ui:latest |
| depends_on: |
| - fineract |
| ports: |
| - '8080:80' |
| environment: |
| # Where *this container* reaches Fineract. Not a browser-visible URL: nginx proxies |
| # /api/ here, and the application only ever calls its own origin. |
| - FINERACT_API_URL=https://fineract:8443/fineract-provider/api |
| # The stock Fineract image serves a self-signed certificate, so the proxy cannot verify it. |
| # Set this to `on` wherever the upstream presents a certificate the container trusts. |
| - FINERACT_PROXY_SSL_VERIFY=off |
| - DEFAULT_TENANT=default |
| - RBAC_ENABLED=true |
| - DEVELOPER_TOOLS_ENABLED=false |
| restart: unless-stopped |
| networks: |
| - fineract-network |
| |
| networks: |
| fineract-network: |
| driver: bridge |
| |
| volumes: |
| fineract-postgres-data: |