Welcome Guest! Log in
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…


663 stambia plus docker

Docker is the leading container platform and can be used to run Stambia Analytics inside containers. This article explains how to build a Stambia Analytics container using Tomcat web server. The installation of a docker client and the detailed command options are out of scope of this article, please refer to official documentation at Docker docs

Prerequisites:

  • stambia analytics zip archive from stambia.org
  • Docker client environment ready

 

As Stambia Analytics needs to be deployed on a web server, we must use a proper base container such as tomcat:8.5.40. Stambia analytics deployment on JBoss wildfly was also tested (using jboss/wildfly base container), but this article focuses on Tomcat.

Before building the container we must prepare some configuration files for Tomcat. In the example below I use a tomcat-users.xml file to create a user to connect to Stambia Analytics, a context.xml file to declare an external database, and a context-manager.xml file for security purpose. You should also prepare the necessary jdbc drivers that analytics would need - I use a dedicated "drivers" folder for that.

Please refer to Stambia Analytics Installation Guide and Tomcat official documentation for more information regarding configurations.

Once you have gathered all the files, you can prepare a folder to build your container and add the analytics.war extracted from the Stambia Analytics zip archive :

docker analytics folder

The wait-for-it script can be used in case you need the container to wait for a particular HOST & TCP port to be reachable from the container before starting up the web server. You can find this script at https://github.com/vishnubob/wait-for-it If you don't need it you can remove the copy line for this file from the Dockerfile

The Dockerfile looks like this :

FROM tomcat:8.5.40-jre8-slim

RUN mkdir -p /opt/analytics/jdbc

COPY tomcat-users.xml /usr/local/tomcat/conf/

COPY context.xml /usr/local/tomcat/conf/
COPY context-manager.xml /usr/local/tomcat/webapps/manager/META-INF/context.xml

COPY ./drivers /usr/local/tomcat/lib

COPY wait-for-it.sh /opt/analytics

ENV STAMBIA_WEBAPP_HOME /opt/analytics

COPY analytics.war /usr/local/tomcat/webapps

An example can be downloaded here :   document Dockerfile (406 B)  (rename to Dockerfile)

From this folder type the following commands to build the container image :

>cd myDockerFolder
>docker build . -t <containername>

 

Example :

>docker build . -t myrepo/analytics

 

The output should look like this :

663 docker build output

Then you can start your container interactively (-it) using the following command :

>docker run -it -p <hostport>:<guestport> --rm <containername>

 

By default Tomcat uses port 8080 for http communications, so if you want to expose the internal 8080 port of the Stambia Analytics container to the port 7000 on your host you can run the following command :

>docker run -it --rm -p 7000:8080 myrepo/analytics

 

To keep application data accross restarts you can externalize the application folder using the --mount option :

>docker run -it --rm -p 7000:8080 --mount type=bind,source=D:\Docker\runtime\sharedFolder\analytics,target=/opt/analytics myrepo/analytics

 

Articles

Suggest a new Article!