Installing CellStore with Docker, Part 3: Creating CellStore container

These instructions are meant for the first installation only of CellStore. For updates, refer to the update instruction.

Estimated reading time: 4 minutes

CellStore is usually distributed as a compressed archive or through Reportix’ private Docker registry.

Loading CellStore image

The first step of the installation is loading CellStore image to your docker host.

If installing from a compressed archive:

gunzip -c cellstore-vNEXT.gz | docker load

If installing from Reportix’ private Docker registry please request access to the Reportix Support. Once you have done so run:

docker login registry.reportix.com -u username
docker pull registry.reportix.com/cellstore/cellstore:vNEXT

Configure CellStore

CellStore configuration, license, log and cache files are stored in CellStore home folder, denoted %CELLSTORE_HOME% in what follows. This folder can be located anywhere on your computer, as long as it can be read and written by the docker container.

Initializing CellStore home directory

First, we need to create the folder on our host machine and place the license file received from the Reportix support in it. Then, we can generate the default configuration files into the folder.

mkdir -p %CELLSTORE_HOME%
cp license.lic %CELLSTORE_HOME%
docker run --rm -it registry.reportix.com/cellstore/cellstore:vNEXT -v "%CELLSTORE_HOME%:/root/cellstore" init-cellstore-home

For instance, if we place the %CELLSTORE_HOME% in /var/reportix/cellstore:

mkdir -p /var/reportix/cellstore
cp license.lic /var/reportix/cellstore
docker run --rm -it registry.reportix.com/cellstore/cellstore:vNEXT -v "/var/reportix/cellstore:/root/cellstore" init-cellstore-home

This last command will generate two configuration files in the %CELLSTORE_HOME%, log4j2.xml containing the log settings and reportix.properties containing CellStore settings.

If the log4j2.xml or reportix.properties files already exists, they will not be overwritten.

Database Configuration

To be able to start CellStore, we need to configure the database credentials in reportix.properties before proceeding. To do so you need to replace the values of the following fields with the correct values for your configuration.

localhost, 127.0.0.1, or equivalent don’t work

If you are running CellStore on the same host machine as your MongoDB or MarkLogic database server, via a Docker container or natively, you might be tempted to write localhost, 127.0.0.1, ::1 or an equivalent address in the MONGO_SERVER or MARKLOGIC_SERVER field. Neither of these values will work, as they will all refer to CellStore docker container itself and not to its host. You need to either setup the Docker container networking or use dockerhost as address to denote the Docker container host machine.

Configuration for MongoDB

In order to use MongoDB as the database engine you need to configure:

DB_LAYER=MONGO
MONGO_SERVER=dockerhost
MONGO_PORT=27017
MONGO_DB=myDB
MONGO_USER=myUser
MONGO_PASS=123456
MONGO_SSL=false

If the MongoDB server is running with authentication disabled, you can leave the MONGO_USER and MONGO_PASS values empty. MONGO_SSL can be either false or true. It is not necessary to create a database in MongoDB beforehand if the user has the rights to do so.

Configuration for Elasticsearch

Note: You need to purchase the Elasticsearch Connector license to be able to use Elasticsearch.

In order to use Elasticsearch for full-text search of facts, footnotes, or labels (tables, dimensions, entities, etc.):

ELASTIC_SEARCH_SERVERS=localhost:9200,192.178.168.27:9201
# index names
ELASTIC_SEARCH_INDEX_LABELS=cellstore-labels
ELASTIC_SEARCH_INDEX_FACTS=cellstore-facts
ELASTIC_SEARCH_INDEX_FOOTNOTES=cellstore-footnotes
# configure custom analyzers for specific languages (OPTIONAL)
# ELASTIC_SEARCH_LANGUAGE_JA=kuromoji

Configuration for MarkLogic

Note: You need to purchase the MarkLogic Connector license to be able to use MarkLogic.

In order to use MarkLogic as database engine you need to configure:

DB_LAYER=MARKLOGIC
MARKLOGIC_SERVER=marklogic.host.example.com
MARKLOGIC_PORT=8010
MARKLOGIC_DB=reportix-cellstore-1
MARKLOGIC_USER=myUser
MARKLOGIC_PASS=123456
MARKLOGIC_VERSION=10
MARKLOGIC_DIRECTORIES_URI_PREFIX=/my/own/prefix

In MarkLogic the “default (and maximum) transaction time limit is the request time limit configured for the server that creates the transaction” (see MarkLogic Documentation). If e.g. an instance import takes longer than the transaction limit the import will fail. In this case the server limit needs to be increased. Also make sure to set the correct version of your MarkLogic installation which might be only ‘9’ or ‘10’ for MarkLogic versions 9 or 10 at this moment.

To not interfere with any existing data in the MarkLogic Database you can define a prefix for the created directories by defining MARKLOGIC_DIRECTORIES_URI_PREFIX=/prefix. All directory URIs will then be prefixed with /prefix.

Validate configuration

Once you have finished writing the database configuration, you can test the whole CellStore configuration and license.

docker run --rm -it registry.reportix.com/cellstore/cellstore:vNEXT -v "%CELLSTORE_HOME%:/root/cellstore" check-configuration

For instance, if we place the %CELLSTORE_HOME% in /var/reportix/cellstore:

docker run --rm -it registry.reportix.com/cellstore/cellstore:vNEXT -v "/var/reportix/cellstore:/root/cellstore" check-configuration

This command will validate both the database credentials and the installed license. When no errors are reported proceed to the next part.

On to Part 4 »

cellstore, install, installation, documentation, container, image