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:
- Flowengine Frontend
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.
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
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
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 (