Skip to content

The Containerized Flow Engine

The services composing a titan Flow Engine deployment are containerized into docker images. They can be used for production or testing environments as well as for development.

Available image labels:

  • stable: Images built from the master branch
  • latest: Images built from the development branch

Flow engine services that are to be placed in Alpine containers must be built on Alpine. Alpine uses the musl-c libraries instead of the glibc that is standard with other Linux distributions like Debian or Ubuntu.

Images on Dockerhub:

Service Images

Images provided for running the services are based on Alpine mainly for reasons of image size.

Services are layered on top of Alpine 3.11.

Services like titan Flowmanager that require a Python 3.7 runtime to be available need to be based off the available titan Baseimages that have the prerequisites already installed.

Container image layers

Configuration files for the processes are expected to be at /etc/titanfe/<servicename>/config.yaml and should be mounted from a folder on the host to the running container:

docker run -v /titanfe/gridmanager:/etc/titanfe/gridmanager industrialdevops/flow-engine-flowmgrsvc

The images use environment variables to pass parameters that are required on process start-up like location of service configuration file, listening port and log level. Variables are defaulted according to the service's needs.

Let's look at dockerfile of the Gridmanager service for instance:

FROM alpine:3.11

...

ENV SVC_PORT=8080
ENV LOG_LEVEL=info
ENV SVC_CONFIG=/etc/titanfe/gridmanager/config.yaml

ENTRYPOINT exec ./gridmanager --port $SVC_PORT  --log-level $LOG_LEVEL --config-file $SVC_CONFIG

Complete example for stating the container relying on the defaults of the environment variables:

docker run -p 8080:8080 \
           -v ./configs/titanfe/gridmanager:/etc/titanfe/gridmanager
           industrialdevops/flow-engine-flowmgrsvc:stable

Usage with Docker-Compose

Titan service images can be used to set up a complete working titan instance using docker-compse

Example for package manager run via docker-compose:

version: '3'

  titan-packagemgrsvc:
    image: industrialdevops/flow-engine-packagemgrsvc:stable
    restart: always
    expose:
      - 8087
    ports:
      - 8087:8087
    volumes:
      - ./etc/titanfe/packagemanager:/etc/titanfe/packagemanager
      - ./brick_packages:/flow-engine/brickPackages
    environment:
      SVC_PORT: 8087
      LOG_LEVEL: debug
      SVC_CONFIG: /etc/titanfe/packagemanager/config.yaml

You need to map the port to the outside for the Web UI to interact with the service. The service's configuration file is mounted from a location on the host with the file configured to your platforms requirements. To store the uploaded brick packages an additional volume is mounted as the hosts storage location (./brick_packages:/flow-engine/brickPackages)