Skip to main content

Docker Compose

Deployment with Docker Compose

With Docker Compose you can deploy, orchestrate and scale TimeBase.

  1. Install Docker
  2. Install Docker Compose
  3. Copy and create docker-compose.yml as defined below
  4. Run docker-compose up -d
# docker-compose.yml Community Edition example

version: "3"
services:
timebase:
image: "finos/timebase-ce-server:6.1"
stop_grace_period: 5m
ulimits:
nofile:
soft: 65536
hard: 65536
environment:
- JAVA_OPTS=
-Xms8g
-Xmx8g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/timebase-home/timebase.hprof
-Xlog:gc=debug:file=/timebase-home/GClog-TimeBase.log:time,uptime,level,tags:filecount=5,filesize=100m
ports:
- 8011:8011
volumes:
- "./timebase-home:/timebase-home"

timebase-admin:
image: "epam/timebase-ws-server:1.1"
environment:
- JAVA_OPTS=
-Xmx1g
-Dserver.port=8099
-Dtimebase.url=dxtick://timebase:8011
-Dserver.compression.enabled=true
-Dserver.compression.mime-types=text/html,text/css,application/javascript,application/json
ports:
- 8099:8099
depends_on:
- timebase

Configuration

You can configure TimeBase via Java system properties and in admin.properties configuration file.

Java system properties

You can configure TimeBase by passing Java environment variable as JAVA_OPTS in docker-compose file:

# Example
environment:
- TIMEBASE_SERIAL=${SERIAL_NUMBER} # for Enterprise Edition
- JAVA_OPTS=
-Xms8g
-Xmx8g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/timebase-home/timebase.hprof

admin.properties

You can configure selected TimeBase properties in admin.properties configuration file and place it in timebase-home\config\ folder. In docker-compose.yml, mount this folder to use admin.properties configurations.

# Example
volumes:
- "./timebase-home:/timebase-home"

In admin.properties you can configure host, port, version, and other TimeBase parameters.

Example
# Example of admin.properties file
TimeBase.host=localhost
TimeBase.port=8011
TimeBase.version=5.0
TimeBase.enableRemoteAccess=true

Refer to enable SSl to learn how to enable SSL in admin.properties file.

TimeBase Deployment with SSL

Here is basic (minimal) instructions for TimeBase deployment with SSL

Docker Compose

Configure docker-compose.yml file.

# docker-compose.yml Community Edition example

version: "3"
services:
timebase:
image: "finos/timebase-ce-server:6.1"
stop_grace_period: 5m
ulimits:
nofile:
soft: 65536
hard: 65536
environment:
- JAVA_OPTS=
-Xms8g
-Xmx8g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/timebase-home/timebase.hprof
-Xlog:gc=debug:file=/timebase-home/GClog-TimeBase.log:time,uptime,level,tags:filecount=5,filesize=100m
ports:
- 8011:8011 //TimeBase Server port
- 8022:8022 //SSL port
volumes:
- "./timebase-home:/timebase-home"

timebase-admin:
image: "epam/timebase-ws-server:1.1"
environment:
- JAVA_OPTS=
-Xmx1g
-Dserver.port=8099
-Dtimebase.url=dxtick://timebase:8011
-Dserver.compression.enabled=true
-Dserver.compression.mime-types=text/html,text/css,application/javascript,application/json
ports:
- 8099:8099
depends_on:
- timebase
info

Refer to Enable SSL for additional information.

admin.properties

In admin.properties configuration file specify the following parameters to enable SSL:

TimeBase.sslInfo=QSKeystoreInfo
TimeBase.sslInfo.keystoreFile=test.jks //security certificate file
TimeBase.sslInfo.keystorePass=<password>
TimeBase.enableSSL=true //enable SLL
TimeBase.sslInfo.sslPort=8022 //SSL port same as in docker-compose
TimeBase.sslInfo.sslForLoopback=false

Create a JKS file in case you use a self-signed certificate. Specify JKS file name for keystoreFile and a password for keystorePass.

info

Refer to Enable SSL for additional information.

TimeBase Deployment with UAC

In admin.properties configuration file specify the following parameters to enable UAC:

QuantServer.security.rulesConfig=uac-access-rules.xml //users authorization information
QuantServer.security.userDirectoryConfig=uac-file-security.xml //users authentication information
QuantServer.security=FILE
info

Refer to User Access Control for additional information.

Useful Commands

  • docker-compose images - show you component versions.
  • docker-compose logs CONTAINER_NAME - display log output from service.
  • Use docker compose logs -f CONTAINER_NAME to follow log output.