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 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 Configurations for an example of doing this via Docker-Compose and the resources for Kubernetes.

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.

Configurations

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.

ClosedDocker-Compose Configuration

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

services:
  postgres:
    image: postgres:${POSTGRES_VERSION}
    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=<path to licence file>
VERSION=<version>
POSTGRES_VERSION=<postgres version>

ClosedKubernetes

1Integrate Helm charts can be used to deploy using Kubernetes. The README and chart settings can be found in the 1Spatial Helm charts.

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.