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
- Userservice
- Folwmanager
- Gridmanager
- Packagemanager
- Logengine
- Repositoryservice
- Endpointprovider
- Flowengine
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.13.
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.13
...
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
)