Public | Automated Build

Last pushed: 7 months ago
Short Description
Short description is empty for this repo.
Full Description

IdentityMappingService docker image

Docker image of the Open PHACTS service
queryExpander, which includes
(IMS) and the VoID Validator.

This document will call this service "IMS" even though it includes all of the above.


To run the IMS, and expose it on port 8081, use:

docker run --name ims --link mysql-for-ims:mysql -p 8081:8080 -d openphacts/identitymappingservice

To expose the AJP port 8009, which is useful for
proxying from the Apache HTTP server, add:

-p 8009:8009 

You can check the Tomcat logs using:

docker logs ims

The server is initialized when the logs say something along the line of:

20-Apr-2015 10:41:44.590 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /usr/local/tomcat/webapps/ROOT.war has finished in 29,575 ms
20-Apr-2015 10:41:44.611 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
20-Apr-2015 10:41:44.645 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
20-Apr-2015 10:41:44.649 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 29838 ms

At this point you can access the IMS service at http://localhost:8081/QueryExpander/ (or equivalent host/port).

Data loading

This docker image assumes there will be a mySQL
on its virtual hostname mysql, using the
database ims with username ims and password ims.
(You can customize these by modifying
and rebuilding this image.)

The simplest way to achieve this is to --link to a mysql docker image,
which we will call mysql-for-ims and ask it to create the ims database for us.

docker run --name mysql-for-ims -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
  -e MYSQL_DATABASE=ims -e MYSQL_USER=ims -e MYSQL_PASSWORD=ims -d mysql

Next you need to load it either with the latest Open PHACTS IMS mysql

or load it manually from configured linksets. Below we'll use the mySQL dump as it
requires the least setup (although it is less flexible.)

mkdir /tmp/$$ ; cd /tmp/$$
sha1sum -c ims*.sha1
(echo 'use ims;'; gunzip -c ims-*.gz) | docker run -i --link mysql-for-ims:mysql --rm \
  mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

Loading should take from 30 minutes to an hours, depending on the disk. No
output will be produced while loading.

Custom data loading

To load your own linksets instead (or in addition to) the
official Open PHACTS linksets, you can use the loader command line
and provide a load.xml file, either on the web (http://..) or on a local
file system as seen from the Docker container (file:///).

The example below assumes you have load.xml in the directory /home/johndoe/data5,
which we'll expose to /staging inside the container:

docker run --link mysql-for-ims:mysql -v /home/johndoe/data5:/staging openphacts/identitymappingservice loader file:///staging/load.xml

During loading, log output should be produced for each linkset.

As an example of load.xml, see
Remote URLs can alternatively be loaded directly (and thus don't need a
/staging volume):

docker run --link mysql-for-ims:mysql openphacts/identitymappingservice loader

Note that loading of the 1.5 load.xml takes about 3 hours.

Note that if you don't include the <clearAll /> operation, the content of the
database is preserved, this can be used for incremental loading from multiple
load files.

Producing new SQL dump

After custom data loading (see above) you might want to produce a new mySQL
dump for faster loading/distribution. This is how the official IMS dump is

docker run -it --link mysql-for-ims:mysql --rm  mysql sh -c \
  'exec mysqldump ims --skip-add-locks --no-autocommit \
  -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot \
  -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" 2>/dev/null' > mysql-for-ims-1.5-20150519.sql
gzip mysql-for-ims-1.5-20150519.sql
sha1sum ims-1.5-20150519.sql.gz > ims-1.5-20150519.sql.gz.gz
Docker Pull Command
Source Repository