This page is describing how to run this Docker for a production usage. For a trial/evaluation usage, please refer to this page.
Within the Docker container, icCube is being installed in the /opt/icCube folder and is running
with the Linux user ic3.
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).
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.
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:
- permission-denied-on-accessing-host-directory-in-docker
- is-it-possible-to-map-a-user-inside-the-docker-container-to-an-outside-user
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
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 \
...
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 \
...
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
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).
The icCube documentation is available here.
_