Official Images for TOLERANT Bank
2.8K
Starting with version TOLERANT Bank 11.2 supports additional country information for Austria, along with new data fields for output.
When using this version, you must use an updated version of the reference data.
You can find the new reference data alongside the legacy data on our SFTP server.
The Docker image provided here includes built-in sample data, which already contains the new content, so you can start your testing right away.
Companies dealing with direct debit mandates and bank transfers know how costly and time-consuming return debit notes and payment rejections can be. Often, invalid account numbers are responsible for the financial and bureaucratic effort that then arises. With TL Bank you can check and correct bank data at the time of entry and avoid such rejects and costly manual corrections.
TL Bank is a validation system for bank details. Reference data is integrated into the application, which is used to check the validity of the data and to complete or correct it if necessary.
TL Bank can already check during data entry whether the IBAN is syntactically correct, all specifications for the structure of an IBAN are met and the IBAN can be clearly assigned to a bank. If everything is correct, the IBAN is valid. Missing information about the bank – such as the complete bank name, bank code, BIC, postal code or city – is enriched by TL Bank with reference data from SWIFT.
Reference tables and check digit algorithms of the Deutsche Bundesbank (German Federal Bank) and the Österreichische Nationalbank (Austrian Federal Bank) as well as city and suburb directories serve as data source for the German version. The reference data is kept up-to-date by us. Program modifications and enhancements are made as part of the update process.
In the current international version TL Bank is available for all 75 official IBAN countries. For bank names, the TOLERANT search with integrated synonym and stop word catalogues is used for the bank name determination, as well as the city/subcity determination known from TL Bank. The matching is based on the proven technology of TL Match.

The BIC (Business Identifier Code) is an internationally valid bank code defined by SWIFT (Society for Worldwide Interbank Financial Telecommunication). It is also referred to synonymously as the SWIFT code. The BIC code consists of eight or eleven alphanumeric characters and is subdivided as follows:
Together with the internationally standardized account number IBAN, it is used to identify an account in the SEPA area (Single Euro Payments Area) and for euro transfers, which have been valid since 2008, in order to identify a recipient perfectly in both national and international payment transactions. The SEPA area consists of the 28 EU member states, the other EEA countries Iceland, Liechtenstein and Norway, as well as Switzerland, Monaco and San Marino. In the SEPA area, standardized procedures are offered throughout Europe for cashless payment transactions.
Notes
- The container needs licenses and data to run properly. For proper test licences and testdata please contact [email protected].
- The required memory depends on the amount of data used.
- The required configuration files can be found on the official Bank GitHub
Starting and stopping can be managed using a simple docker compose file. Here is an example without security:
services:
backend:
image: ${TBANK_DOCKER_REGISTRY}/bank:${TBANK_VERSION}
restart: unless-stopped
mem_limit: 6g
mem_reservation: 2g
shm_size: 1g
cpus: 4
# Uncomment the below line and set user and group id (from host system) to use it in container
# user: "$UID:$GID"
volumes:
# persist bank logs
- bank-logs:/opt/tolerant/logs
# Example for custom configuration via volume:
- bank-config:/opt/tolerant/config
# Example for custom data via volume
- bank-data:/opt/tolerant/data
# Example for custom protocols via volume
- bank-protocols:/opt/tolerant/protocols
environment:
# number of processors to be used by the JVM
- JVM_OPT_ACTIVE_PROCESSOR_COUNT=4
- TZ=${TZ}
# If no prometheus export is wanted, set to false
- TL_PROMETHEUS_METRICS_ENABLED=true
gui:
image: ${TBANK_DOCKER_REGISTRY}/bank-gui:${TBANK_VERSION}
restart: unless-stopped
mem_limit: 6g
mem_reservation: 1g
shm_size: 512M
cpus: 2
# Uncomment the below line and set user and group id (from host system) to use it in container
# user: "$UID:$GID"
volumes_from:
- backend:rw
environment:
- TZ=${TZ}
# url to service backend
- BACKEND_SERVICE_URL=http://backend:8080
# number of processors to be used by the JVM
- JVM_OPT_ACTIVE_PROCESSOR_COUNT=2
# If no prometheus export is wanted, set to false
- TL_PROMETHEUS_METRICS_ENABLED=false
# Uncomment the below line when installing soap
# - IS_SOAP_INSTALLED=true
prometheus:
image: prom/prometheus:${PROMETHEUS_VERSION}
volumes:
- type: bind
source: ./config/prometheus/prometheus.yml
target: /etc/prometheus/prometheus.yml
read_only: true
- prometheus-data:/prometheus
expose:
- 9090
depends_on:
- backend
grafana:
image: grafana/grafana:${GRAFANA_VERSION}
volumes:
- ./config/grafana/datasources:/etc/grafana/provisioning/datasources
- ./config/grafana/dashboards:/etc/grafana/provisioning/dashboards
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=tolerant
- GF_SECURITY_ADMIN_PASSWORD=tolerant
ports:
- ${GRAFANA_PORT}:3000
depends_on:
- prometheus
proxy:
image: nginx:${NGINX_VERSION}-alpine
restart: unless-stopped
volumes:
- type: bind
source: ./config/nginx/default.conf.template
target: /etc/nginx/templates/default.conf.template
read_only: true
# persist nginx logs
- nginx-logs:/etc/nginx/logs
environment:
- PROXY_HOST_PORT=${NGINX_PORT}
ports:
- ${NGINX_PORT}:8080
depends_on:
backend:
condition: service_started
gui:
condition: service_healthy
volumes:
# Volume for persistent data of keycloak
nginx-logs:
bank-logs:
grafana-data:
prometheus-data:
bank-protocols:
# Examples for external created volumes with custom configuration and data
bank-config:
# external: true
bank-data:
# external: true
Here is an example with enabled security:
services:
backend:
image: ${TBANK_DOCKER_REGISTRY}/bank:${TBANK_VERSION}
restart: unless-stopped
mem_limit: 6g
mem_reservation: 2g
shm_size: 1g
cpus: 4
# Uncomment the below line and set user and group id (from host system) to use it in container
# user: "$UID:$GID"
volumes:
# persist bank logs
- bank-logs:/opt/tolerant/logs
# Example for custom configuration via volume:
- bank-config:/opt/tolerant/config
# Example for custom data via volume
- bank-data:/opt/tolerant/data
# Example for custom protocols via volume
- bank-protocols:/opt/tolerant/protocols
environment:
- INTERNAL_IDENTITY_PROVIDER_URL=${INTERNAL_IDENTITY_PROVIDER_URL}
- TOLERANT_CLIENT_ID=${TOLERANT_CLIENT_ID}
- SECURITY_ENABLED=true
# number of processors to be used by the JVM
- JVM_OPT_ACTIVE_PROCESSOR_COUNT=4
- TZ=${TZ}
# If no prometheus export is wanted, set to false
- TL_PROMETHEUS_METRICS_ENABLED=true
extra_hosts:
- host.docker.internal:host-gateway
depends_on:
- keycloak
gui:
image: ${TBANK_DOCKER_REGISTRY}/bank-gui:${TBANK_VERSION}
restart: unless-stopped
mem_limit: 6g
mem_reservation: 1g
shm_size: 512M
cpus: 2
# Uncomment the below line and set user and group id (from host system) to use it in container
# user: "$UID:$GID"
volumes_from:
- backend:rw
environment:
- TZ=${TZ}
# enable security for the GUI service
- TOLERANT_GUI_URL=https://host.docker.internal:${NGINX_HTTPS_PORT}
- TOLERANT_CLIENT_ID=${TOLERANT_CLIENT_ID}
- IDENTITY_PROVIDER_URL=${IDENTITY_PROVIDER_URL}
- INTERNAL_IDENTITY_PROVIDER_URL=${INTERNAL_IDENTITY_PROVIDER_URL}
- SECURITY_ENABLED=true
# url to service backend
- BACKEND_SERVICE_URL=http://backend:8080
# number of processors to be used by the JVM
- JVM_OPT_ACTIVE_PROCESSOR_COUNT=2
# If no prometheus export is wanted, set to false
- TL_PROMETHEUS_METRICS_ENABLED=false
# Uncomment the below line when installing soap
# - IS_SOAP_INSTALLED=true
extra_hosts:
- host.docker.internal:host-gateway
depends_on:
- keycloak
prometheus:
image: prom/prometheus:${PROMETHEUS_VERSION}
volumes:
- type: bind
source: ./config/prometheus/prometheus.yml
target: /etc/prometheus/prometheus.yml
read_only: true
- prometheus-data:/prometheus
expose:
- 9090
depends_on:
- backend
grafana:
image: grafana/grafana:${GRAFANA_VERSION}
volumes:
- ./config/grafana/datasources:/etc/grafana/provisioning/datasources
- ./config/grafana/dashboards:/etc/grafana/provisioning/dashboards
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=tolerant
- GF_SECURITY_ADMIN_PASSWORD=tolerant
ports:
- ${GRAFANA_PORT}:3000
depends_on:
- prometheus
openssl:
image: tolerant-products/openssl
build: ./config/openssl
environment:
- ORGANISATION_UNIT=TOLERANT Bank
volumes:
- ./config/nginx/ssl/certs:/etc/ssl/certs
- ./config/nginx/ssl/private:/etc/ssl/private
proxy:
image: nginx:${NGINX_VERSION}-alpine
restart: unless-stopped
volumes_from:
- openssl
volumes:
- type: bind
source: ./config/nginx/ssl.conf.template
target: /etc/nginx/templates/ssl.conf.template
read_only: true
- type: bind
source: ./config/nginx/locations/keycloak.loc.template
target: /etc/nginx/templates/keycloak.loc.template
read_only: true
# for case of own ssl certificate
#- ./config/nginx/ssl/certs:/etc/ssl/certs
#- ./config/nginx/ssl/private:/etc/ssl/private
# persist nginx logs
- nginx-logs:/etc/nginx/logs
environment:
- PROXY_HOST_HTTPS_PORT=${NGINX_HTTPS_PORT}
- CERT_PRIVATE_KEY_FILENAME=${CERT_PRIVATE_KEY_FILENAME}
- CERT_FILENAME=${CERT_FILENAME}
- NGINX_SERVER_NAME=${NGINX_SERVER_NAME}
# the following variables are only needed if the included keycloak is to be used
- INTERNAL_IDENTITY_PROVIDER_URL=${INTERNAL_IDENTITY_PROVIDER_URL}
- INTERNAL_IDENTITY_PROVIDER_PORT=${KC_PORT}
ports:
- ${NGINX_HTTPS_PORT}:8443
depends_on:
backend:
condition: service_started
gui:
condition: service_healthy
openssl:
condition: service_completed_successfully
restart: true
extra_hosts:
- host.docker.internal:host-gateway
postgres:
image: postgres:${POSTGRES_VERSION}
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
keycloak:
image: keycloak/keycloak:${KC_VERSION}
command: start-dev --import-realm
restart: unless-stopped
volumes:
- type: bind
source: ./config/keycloak/import
target: /opt/keycloak/data/import
read_only: true
environment:
- KC_DB=postgres
- KC_DB_SCHEMA=public
- KC_DB_USERNAME=keycloak
- KC_DB_PASSWORD=password
- KC_DB_URL_HOST=postgres
- KC_DB_URL_PORT=5432
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
- KC_HOSTNAME_PORT=${KC_PORT}
- KC_PROXY=edge
- KC_HOSTNAME_STRICT=false
- TOLERANT_CLIENT_ID=${TOLERANT_CLIENT_ID}
- TOLERANT_REALM=${TOLERANT_REALM}
ports:
- ${KC_PORT}:8080
depends_on:
- postgres
volumes:
# Volume for persistent data of keycloak
nginx-logs:
bank-logs:
grafana-data:
prometheus-data:
bank-protocols:
# Examples for external created volumes with custom configuration and data
bank-config:
# external: true
bank-data:
# external: true
# Volume for persistent data of keycloak
postgres-data:
The services can be started using the following commands:
Without security:
docker compose up -d
With enabled security:
docker compose -f compose-secure.yml up -d
The docker compose command should be executed from the directory containing the compose.yaml or compose-secure.yml file.
The running services can be stopped using the following commands:
Without security:
docker compose down
With enabled security:
docker compose -f compose-secure.yml down
TOLERANT Bank is licensed under a commercial license. This means that the software can only be used for commercial purposes, and that the user must have a valid license to use the software. To get a valid license, please contact [email protected]
Content type
Image
Digest
sha256:66d417625…
Size
278 MB
Last updated
7 months ago
docker pull tolerantsoftware/bank