Docker images for hosting Unified Views, as of version 2.3 this repository switched to a modular approach. There are variants in which the application is composed according to its natural components (feature/compactmodular branches).
The original master branch is now moved to 2.1.0 branch
TODO: update documentation TODO: this is work in progress
The following unified views dockers are provided:
- uv-shared: a data docker providing the shared libraries and configuration
- uv-frontend: a docker image that runs the unified views frontend and master api, requires uv-shared and uv-backend
- uv-backend: a docker image that runs the unified views backend, requires uv-shared
- uv-mariadb: a docker image for mariadb that has the unified-views schema and required data preloaded
- uv-add-dpus: a docker image that can be used to add dpus to unified-views via the master api
Select in correct sequence the docker-compose files and trigger then the build
docker-compose -f cm-docker-compose.yml -f cm-docker-compose-dev.yml build
docker-compose -f cm-docker-compose.yml up -d
The backend and frontend share a config file (/config/config.properties
), libraries (/unified-views/lib
) and a folder to store dpu's (/unified-views/dpu
). We've provided a docker image that provides these volumes for you, so you can just run it and use docker's volumes-from directive.
The unified-views-shared docker image runs a script on start that allows you to change the config file via the environment variables. The environment variable should be prefixed with UV_, in uppercase and all dots (.) in the property name should be converted to underscores (_). E.g. property foo.bar=baz should be configured as UV_FOO_BAR=BAZ. See the config file for a complete list of properties.
Public images usage:
docker run --name uv-shared tenforce/unified-views-shared
docker run --name uv-mysql tenforce/unified-views-mariadb
docker run --name uv-backend --volumes-from uv-shared --link uv-mysql:mysql tenforce/unified-views-backend
docker run --name uv-frontend --volumes-from uv-shared --link uv-backend:backend --link uv-mysql:mysql tenforce/unified-views-frontend
Local images usage, assuming the docker images are created using as tag the directory name:
docker run --name uv-shared uv-shared
docker run -d --name uv-mariadb -e MYSQL_ROOT_PASSWORD=iamroot! uv-mariadb
docker run -d --name uv-backend --volumes-from uv-shared --link=uv-mariadb:mysql uv-backend
docker run -i --name uv-frontend --port 8080:8080 --volumes-from uv-shared --link uv-backend:backend --link uv-mariadb:mysql uv-frontend
Problem: at this moment the tomcat is not running is a detached mode.
You can also choose to have the config, libraries and dpus available on your host system and mount them as data volumes. This may be more convenient if you often need access to the configuration file. In this case copy the libraries and configuration to a local directories and mount them accordingly.
docker run --name uv-sql tenforce/unified-views-mariadb
docker run --name uv-backend -v /your/config/dir:/config -v /your/library/dir:/unified-views/lib -v /your/dpu/dir:/unified-views/dpu --link mysql:mysql tenforce/unified-views-backend
docker run --name uv-frontend -v /your/config/dir:/config -v /your/library/dir:/unified-views/lib -v /your/dpu/dir:/unified-views/dpu --link mysql:mysql tenforce/unified-views-frontend
By default the unified-views installation is provided without DPU's, DPU's can be added through the GUI or the master API. To quickly add a set of dpu's a convience docker image is provided. The following command will add all official DPU's to your unified-views installation.
docker run --rm --link uv-frontend:frontend tenforce/unified-views-add-dpus
docker run --rm --link uv-frontend:frontend uv-add-dpus
To add your own dpu's use the following command with your dpu directory.
docker run --rm -v /your/dpu/directory:/dpus --link uv-frontend:frontend tenforce/unified-views-add-dpus
By default the configuration from uv-shared is configured to connect to a mariadb as follows, this corresponds to the configuration of uv-mariadb.
database.sql.driver = org.mariadb.jdbc.Driver
database.sql.url = jdbc:mariadb://mysql:3306/unified_views?characterEncoding=utf8
database.sql.user = unified_views
database.sql.password = s00pers3cur3
It is recommended to update these credentials, you can do so by running uv-shared with the following environment variables: UV_DATABASE_SQL_USER
, UV_DATABASE_SQL_PASSWORD
and for uv-mariadb use MYSQL_USER
and MYSQL_PASSWORD
.
NOTE: Currently it is not possible to change the database name when using uv-mariadb
If you want to use an existing SQL installation on your host, run the following scripts on a database of your choice:
Provide the correct connection details in uv-shared using the UV_DATABASE_SQL_URL
, UV_DATABASE_SQL_USER
, UV_DATABASE_SQL_PASSWORD
and UV_DATABASE_SQL_DRIVER
environment variables.
Note: You can not use localhost in your SQL_URL as that will link to the running container and not your host machine. Use the --add-host directive to link a hostname to your machine.
For example
docker run --name uv-shared -e UV_DATABASE_SQL_USER=uv -e EV_DATABASE_SQL_PASSWORD=uv123 tenforce/unified-views-shared
docker run --name uv-backend --volumes-from uv-shared --add-host mysql:$(route -n | awk '/UG[ \t]/{print $2}') tenforce/unified-views-backend
docker run --name uv-frontend --volumes-from uv-shared --link uv-backend:backend --add-host mysql:$(route -n | awk '/UG[ \t]/{print $2}') tenforce/unified-views-frontend
If the resulting RDF should be written to a Virtuoso running in a Docker container it might be helpful to link the Virtuoso container to the Unified Views container using the option --link my-virtuoso:virtuoso
.
If you want to use Virtuoso instead of the local RDF store as RDF platform to run the Unified Views pipelines, you have to configure the following environment variables: UV_DATABASE_RDF_PLATFORM=virtuoso
, UV_DATABASE_RDF_URL=jdbc:virtuoso://virtuoso:1111/charset=UTF-8/log_enable=2
, UV_DATABASE_RDF_USER=dba
, UV_DATABASE_RDF_PASSWORD=dba_pwd
.