Deploying 1Integrate in a Docker Container

1Integrate can be deployed using Docker containers. Deploying 1Integrate in this way is only recommended for users with experience of Docker architecture, for more please refer to Docker documentation.

The following images are available for 1Integrate Docker deployment:

  • Interface (UI, REST API)

  • Headless interface (REST API)

  • Engine

     Note: Please contact 1Spatial support for information on how to obtain these images.

The docker images are based on the WildFly bundle and will require the same configuration files in the SETTINGS directory as a standard installation.

A SETTINGS directory containing your configuration files should be mounted into /1integrate/SETTINGS.

See Example Configuration for an example of doing this via docker-compose and for more on how to perform 1Integrate configuration, see Installation and Configuration.

     Note: Your 1Integrate licence file must be mounted into the container e.g: /1integrate/LICENSE/license.lic
This must match the licence location defined in the settings.properties file.

The Docker containers can be started directly, or by using Docker-Compose or Kubernetes.

     Note: Windows only based formats are not supported when using docker images. For more on data stores, please see Supported Data Stores.

Example Configuration

The following is an example configuration for 1Integrate mounted in a docker container.

ClosedDocker-Compose example configuration

This sample configuration will start a PostgreSQL database, 1 interface and 1 engine. 1Integrate will be available on port 8080 as per the WildFly bundle’s default.

version: '3.7'
services:
    postgres:
        image: postgres:12
        container_name: 1integrate-postgres
        hostname: postgres
        environment:
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=postgres
            - POSTGRES_DB=postgres
        healthcheck:
            test: [ "CMD-SHELL", "pg_isready -U postgres" ]
            interval: 5s
            timeout: 5s
            retries: 5
    integrate-interface:
        image: 1integrate-interface:${VERSION}
        container_name: 1integrate-interface
        depends_on:
            postgres:
                condition: service_healthy
        links:
            - postgres
        ports:
            - "8080:8080"
        volumes:
            - type: bind
            source: "${LICENSE_FILE}"
            target: /1integrate/LICENSE/license.lic
            read_only: true
            - type: bind
            source: "./SETTINGS"
            target: /1integrate/SETTINGS
            read_only: true
    integrate-engine:
        image: 1integrate-engine:${VERSION}
        container_name:  1integrate-engine
        volumes:
            - type: bind
            source: "${LICENSE_FILE}"
            target: /1integrate/LICENSE/license.lic
            read_only: true
            - type: bind
            source: "./SETTINGS"
            target: /1integrate/SETTINGS
            read_only: true

An .env file can provide the values for ${LICENSE_FILE} and ${VERSION} used in the configuration file, e.g:

LICENSE_FILE=</u01/1spatial/license/licence.lic>
VERSION=<version>

Deploying Custom Extensions

Custom extensions will be loaded from the /1integrate/EXTENSIONS directory within the Dockers containers. To include your extensions, mount this directory the same way as the SETTINGS directory above.

For more information on Custom Extensions please refer to Custom Extensions documentation.