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, SOAP API)

  • Headless interface (REST API, SOAP API)

  • Engine

Note: Please contact 1Spatial support for information on how to obtain the 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 configuring 1Integrate for WildFly.

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: FME and Windows only based formats are not supported when using docker images. For more on data stores, please see Supported Datastores.

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.