Sign inSign up

tolerantsoftware/car

By tolerantsoftware

Updated 6 days ago

Official Images for TOLERANT Car

Image
Integration & delivery
Machine learning & AI
0

33

tolerantsoftware/car repository overview

Quick reference

Product Overview

Fault-tolerant search for vehicle models

TOLERANT Car helps you find vehicle models and their attributes even when search terms contain spelling variations or typing errors. Its configurable fuzzy search matches your input against the available vehicle reference data and returns filtered and sorted results.

Search parameters such as manufacturer, model designation and vehicle type help narrow down the results. Additional filtering rules consider new or used vehicles and first-registration dates.

Structured vehicle information for your applications

TOLERANT Car provides structured vehicle information for integration into your applications. Configurable search settings, filters, synonyms and field mappings let you adapt the service to your data and business requirements.

A REST API supports application integration, while a graphical interface allows users to enter searches and view results. Vehicle coverage and the attributes returned depend on the reference data supplied.

TOLERANT Car image

Usage

Notes

  • The container needs licenses and data to run properly. For proper test licenses 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 Car GitHub

Starting and stopping can be managed using a simple docker compose file. Here is an example without security:

services:

  backend:
    image: ${TCAR_DOCKER_REGISTRY}/car:${TCAR_VERSION}
    restart: unless-stopped
    mem_limit: 6g
    mem_reservation: 512M
    cpus: 4
    # user: "$UID:$GID"
    volumes:
      # persist car logs
      - car-logs:/opt/tolerant/logs
      # Example for custom configuration via volume:
      - car-config:/opt/tolerant/config
      # Example for custom data via volume
      - car-data:/opt/tolerant/data
      # Example for custom protocols via volume
      - car-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
      # if no gui is wanted, set to false
      - GUI_ENABLED=true

  gui:
    image: ${TCAR_DOCKER_REGISTRY}/car-gui:${TCAR_VERSION}
    restart: unless-stopped
    environment:
      - GUI_BASE_PATH=/carService
      - API_BASE_PATH=/carService
    depends_on:
      backend:
        condition: service_healthy

  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/common.loc.template
        target: /etc/nginx/templates/common.loc.template
        read_only: true
      - 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
      # Example for ssl data in external volume
      # nginx-ssl:/etc/nginx/ssl
      # In case of basic auth, comment the following in
      # - type: bind
      #   source: ./config/nginx/htpasswd
      #   target: /etc/nginx/htpasswd
      #   read_only: true
    environment:
      - PROXY_HOST_PORT=${NGINX_PORT}
      - GUI_BASE_PATH=/carService
      - SERVER_CONTEXT_PATH=/carService

    ports:
      - ${NGINX_PORT}:8080 # If changed, PROXY_HOST_PORT and TOLERANT_SERVICE_URL need to be adjusted to
    depends_on:
      gui:
        condition: service_healthy
      backend:
        condition: service_healthy


volumes:
  # Volume for persistent data of keycloak
  nginx-logs:
  car-logs:
  grafana-data:
  prometheus-data:
  car-protocols:
  # Examples for external created volumes with custom configuration and data
  car-config:
  #   external: true
  car-data:
  #   external: true

Here is an example with enabled security:

services:

  backend:
    image: ${TCAR_DOCKER_REGISTRY}/car:${TCAR_VERSION}
    restart: unless-stopped
    mem_limit: 6g
    mem_reservation: 512M
    cpus: 4
    # user: "$UID:$GID"
    volumes:
      # persist car logs
      - car-logs:/opt/tolerant/logs
      # Example for custom configuration via volume:
      - car-config:/opt/tolerant/config
      # Example for custom data via volume
      - car-data:/opt/tolerant/data
      # Example for custom protocols via volume
      - car-protocols:/opt/tolerant/protocols
    environment:
      - INTERNAL_IDENTITY_PROVIDER_URL=${INTERNAL_IDENTITY_PROVIDER_URL}
      - IDENTITY_PROVIDER_URL=${IDENTITY_PROVIDER_URL}
      - TOLERANT_CLIENT_ID=${TOLERANT_CLIENT_ID}
      - SECURITY_ENABLED=true
      - TOLERANT_REALM=${TOLERANT_REALM}
      # 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
      # comment this line in to change the logging profile. possible values: anonymized, console, request, jdbc or multi-project
      # - LOGGING_PROFILE=console
      # if no gui is wanted, set to false
      - GUI_ENABLED=true
    depends_on:
      - keycloak

  gui:
    image: ${TCAR_DOCKER_REGISTRY}/car-gui:${TCAR_VERSION}
    restart: unless-stopped
    environment:
      - GUI_BASE_PATH=/carService
      - API_BASE_PATH=/carService
    depends_on:
      backend:
        condition: service_healthy

  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 Car
    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
      - type: bind
        source: ./config/nginx/common.loc.template
        target: /etc/nginx/templates/common.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}
      # adjust the name of the server to your server name
      - NGINX_SERVER_NAME=${NGINX_SERVER_NAME}
      - TOLERANT_REALM=${TOLERANT_REALM}
      # the following 2 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}
      - GUI_BASE_PATH=/carService
      - SERVER_CONTEXT_PATH=/carService

    ports:
      - ${NGINX_HTTPS_PORT}:8443
    depends_on:
      openssl:
        condition: service_completed_successfully
        restart: true
      backend:
        condition: service_healthy
      gui:
        condition: service_healthy
    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
      - KC_BOOTSTRAP_ADMIN_USERNAME=admin
      - KC_BOOTSTRAP_ADMIN_PASSWORD=admin
      - KC_HOSTNAME_STRICT=false
      - KC_HTTP_ENABLED=true
      - 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:
  car-logs:
  grafana-data:
  prometheus-data:
  car-protocols:
  # Examples for external created volumes with custom configuration and data
  car-config:
  #   external: true
  car-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.

Stopping

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

License

TOLERANT Car 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]

Tag summary

Content type

Image

Digest

sha256:6350f1cbd

Size

288.4 MB

Last updated

6 days ago

docker pull tolerantsoftware/car