You enable Docker support for a new StreamBase project by means of the check box on the Configure Maven Artifact panel.
Docker-enabled StreamBase application projects have the following additional features, compared to non-Docker projects.
- src/main/docker
-
Studio places the Dockerfiles and a run script that are used to create Docker images in
src/main/docker
:You can edit these files before creating your Docker image to specify different defaults. See the comments in the files for the variables you can change.
For example, consider this passage is at the top of
src/main/docker/base/Dockerfile
. To specify a different administration username for the node in the Docker container, you can changetibco
to another name.# # Set environment # ENV PRODUCT_HOME /opt/tibco/streambase ENV RUNTIME_HOME /var/opt/tibco/streambase ENV JAVA_HOME /etc/alternatives/jre ENV PATH /bin:/usr/sbin:${PRODUCT_HOME}/distrib/tibco/bin ENV USER_NAME tibco
- src/main/configurations
-
Docker–enabled projects have three HOCON configuration files created with default settings to configure containerized StreamBase nodes:
app.conf defaultmode.conf security.conf The domain name value of the
hosts
property insecurity.conf
is taken from the dockerDomain property that you specify when creating the project. The default isexample.com
.// Default host-based security // name = "deploy_1st" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.security" configuration = { // Make all nodes trusted in the docker network to // eliminate the need for any credentials when accessing // remote nodes // TrustedHosts = { hosts = [ "*.example.com" ] } }
To create and run more than one Docker containerized StreamBase node that can all communicate with each other without user authentication, you must configure both Docker network settings and StreamBase Runtime settings as follows:
-
Configure Docker network settings with
--network
and--hostname
options for the docker run command. -
Specify TrustedHosts membership in the same network for your StreamBase Runtime nodes.
-
Use the same domain name in the
--network
Docker option and in the TrustedHosts configuration.
The following example configures a three node cluster, with node each running the same docker_1st
StreamBase Application.
docker network create example.com docker run -d --name nodeA -e NODENAME=A.cluster -p 2000:2000 --network example.com --hostname A.example.com sample/docker_1st docker run -d --name nodeB -e NODENAME=B.cluster -p 2001:2000 --network example.com --hostname B.example.com sample/docker_1st docker run -d --name nodeC -e NODENAME=C.cluster -p 2002:2000 --network example.com --hostname C.example.com sample/docker_1st
Port 2000 is the default admin port for Studio-created Docker images, as specified in the start-node
script described in the previous section. To run more than one node, you can map different Docker host ports to the default
admin port for each node. Thus, the commands in this example map host ports 2000, 2001, and 2002 to nodeA:2000, nodeB:2000,
and nodeC:2000, respectively.
This example is artificial, because the three nodes contain only the firstapp
EventFlow fragment with no availabilityZones
HA configuration. You can add that configuration and recreate the Docker images. For further information on availabilityZones
configuration, see Runtime Node Configuration in the Configuration Guide.
For further information on command line options for the docker run command, see Configure Networking in Docker's documentation.