Skip to content

Latest commit

 

History

History
150 lines (103 loc) · 6.66 KB

File metadata and controls

150 lines (103 loc) · 6.66 KB

ic3software/iccube

This page is describing how to run this Docker for a production usage. For a trial/evaluation usage, please refer to this page.

Installation Folder

Within the Docker container, icCube is being installed in the /opt/icCube folder and is running with the Linux user ic3.

Data Folder

The icCube generated data is being stored into the /home/ic3/icCube-data folder.

The icCube.xml configuration fileSystemRoot is being configured as /home/ic3/data and it is visible from within the Docs application (fileSystemRootVisibleInDocs).

License Installation

The license file should be directly installed before starting icCube using a bind mounts (more on this later) to make the file /opt/icCube/bin/icCube-4.lic available in the Docker is pointing to your actual license file. Note that once, this external license is available, the possibly installed license used for the evaluation/trial is being ignored.

Mapping Host Folders

The following is demonstrating both how to store icCube-data in the host and how to use specific configuration files from the host using Docker bind mounts (e.g., its license). An approach using Docker volumes should be very similar.

ICCUBE_BIN=           -- host folder containing icCube-4.lic, icCube.xml, ...
                                container: /opt/icCube/bin
                                                icCube.xml                : configuration
                                                icCube-notification.xml   : configuration
                                                icCube.sh                 : startup script (JVM config)
                                                icCube-4.lic              : license
                                                log4j.xml                 : Log4J 2 configuration
                                                icCubeUsers.icc-users     : inital users configuration    (*)
                                                icCubeRoles.icc-roles     : inital roles configuration    (*)
                                                icCubeTenants.icc-tenants : inital tenants configuration  (*)

ICCUBE_WEB_DATA=      -- host folder containing data that can used as schema data source, etc...
                                container: /home/ic3/data
                                                ...

ICCUBE_DATA=          -- host folder containing data as generated by icCube (e.g., logs, backups, etc...)
                                container: /home/ic3/icCube-data
                                                /logs
                                                /cubes
                                                ...

docker run -d --name icCube --restart unless-stopped -p 8282:8282 \
        -v $ICCUBE_BIN/:/opt/icCube/bin \
        -v $ICCUBE_WEB_DATA:/home/ic3/data \
        -v $ICCUBE_DATA:/home/ic3/icCube-data \
        ic3software/iccube:8.4.8

(*) Those files are used to set up once the content of the /home/ic3/icCube-data corresponding directories. Please refer to this page for some description of these folders.

This example is assuming the Bind Mounts in the host are accessible from the Docker user. This should be fine for development or evaluation purpose. For a production, please refer to the following stackoverflow discussions and/or use Docker's volumes instead:

Mapping Host Files

Similarly, you can override single files (e.g., the license):

ICCUBE_BIN=           -- host folder containing icCube-4.lic, icCube.xml, ...
                                container: /opt/icCube/bin
                                                ...

ICCUBE_WEB_DATA=      -- host folder containing data that can used as schema data source, etc...
                                container: /home/ic3/icCube-data
                                                ...

ICCUBE_DATA=          -- host folder containing data as generated by icCube (e.g., logs, backups, etc...)
                                container: /home/ic3/data
                                                ...

docker run -d --name icCube --restart unless-stopped -p 8282:8282 \
        -v $ICCUBE_BIN/icCube-4.lic:/opt/icCube/bin/icCube-4.lic \
        -v $ICCUBE_WEB_DATA:/home/ic3/data \
        -v $ICCUBE_DATA:/home/ic3/icCube-data \
        ic3software/iccube:8.4.8

Run (Chrome/Chromium headless)

icCube is using Chrome/Chromium headless for printing the dashboards. You can start Chrome/Chromium either with a security profile (advised) as following:

docker run ... \
    --security-opt seccomp=$BASEDIR/chrome.json \
    ...

Or with the --no-sandbox option is the security profile is not possible:

docker run ... \
    -e ICCUBE_CHROME_NO_SANDBOX=1 \
    ...

Run (JAVA Options)

You can fully configure the JVM by using your own bin/icCube.sh file as demonstrated above, or you can configure the JVM parameters using the ICCUBE_JAVA_OPTS environment variable to the docker run command.

For example the following is configuring the JVM with 1g or RAM:

docker run ... \
    -e ICCUBE_JAVA_OPTS="-Xms1g -Xmx1g" \
    ...

Note that you can check how this variable is being used in the script/etc/icCube.sh file in this project.

Since icCube 8.5.0, adding a custom JDBC driver (or any other jar) to the classpath can be done as following :

docker run ... \ 
    -e ICCUBE_JAVA_CP="/opt/jdbc/*" \ 
    -v /opt/jdbc:/opt/jdbc \
    ...

Command Line

icCube can run to execute a single command and then exit.

Since icCube 8.5.0, this can be done using the ICCUBE_CMD_LINE environment variable. For example, the following is asking icCube to write on the output console the available commands :

docker run --rm \
    -e ICCUBE_CMD_LINE="--help" \ 
    ic3software/iccube-dev:8.5.0 

Access

Once started you can access icCube by opening a browser:

http://localhost:8282/icCube/console

When evaluating icCube, connect as an anonymous user by leaving blank the username or as admin (password: admin).

Documentation

The icCube documentation is available here.

_