# Desuto & ParaDISE This Docker Compose configuration allows building and running a functional Desuto Web Viewer and Retrieval Interface (including the ParaDISE retrieval engine) from scratch on any Docker-enabled host. This README file aims to describe the structure of the containers and any possible configuration changes that may be required when setting up the system on a new host. ## Prerequisites To run "Desuto-ParaDISE", you will need to install at least: * A recent version of Docker CE : https://docs.docker.com/install/linux/docker-ce/ubuntu/ * A recent version of Docker Compose : https://docs.docker.com/compose/install/ * Preferably a machine with a minimum of **10GB of available RAM** to store the visual indices in-memory ## Containers The ``docker-compose.yml`` file is made up of the following containers: 1. **proxy** : Proxy facade for all services based on nginx 2. **mysql** : MySQL server for storing image metadata (URLs, modalities, captions, etc.) 3. **couchdb** : CouchDgiggingver for storing image annotation data from the Web Viewer 4. **uploads** : Basic nginx instance for serving uploaded images 5. **images** : Basic nginx instance for serving images of the datasets used for retrieval 6. **paradise-gf** : Glassfish Java application server instance hosting the ParaDISE engine 7. **retrieval** : Apache instance hosting the Shambala-based retrieval interface 8. **webviewer** : Node.js server for the Web Viewer / Annotation tool 9. **iipsrv** : IIPImage server for generating the image tiles for the Web Viewer 10. **slideprops** : Python Web Service for extracting slide properties (using Openslide) ## Volumes The following shared volumes are declared: 1. **upload-volume** : Shared volume for uploaded images (served by the **uploads** container) ## Ports The following ports need to be open on the host machine to run all services correctly: 1. **80** : Port 80 is used by the proxy facade to expose all underlying services ## Environment variables The following default environment variables are declared in the ``.env`` file. All current values assume that the server runs on ``localhost`` and all services are behind the **proxy** container. All these variables are injected in various configuration files required by Javascript and Node.js applications. If no special setup is required on the test host, this file does not need to be modified. 1. **PARADISE_ROOT_URL** : Default URL of the ParaDISE engine 2. **RETRIEVAL_INTERFACE_ROOT_URL** : Default URL of the Retrieval Interface 3. **COUCHDB_FRONTEND_ROOT_URL** : Public-facing URL of the CouchDB database 4. **COUCHDB_BACKEND_ROOT_URL** : Backend URL for the CouchDB database 5. **IIP_ROOT_URL** : Default URL of the IIP server 6. **VIEWER_ROOT_URL** : Default URL of the Web Viewer 7. **SLIDEPROPS_ROOT_URL** : Default URL of the Slide Properties Web Service 8. **SLIDEVIEWERDATA_LOCAL_PATH** : Default path of the data for the Web Viewer (uploaded images, converted images, overlays, etc.) ## Required symbolic links In order to keep the size of the Docker Compose archive to a minimum, three folders have to be added separately to the folder structure. The easiest way that avoids modifying the ``docker-compose.yml`` is to make the following symbolic links: * Create a link to the ``images`` folder (containing the ``contextvision`` and ``pubmedcentral-dmli`` subfolders) in the following directory (relative to ``docker-compose.yml``) : ``./data/`` * Create a link to the ``paradise-files`` folder (containing the ``lucene`` and ``indices`` folders amongst others) in the following directory (relative to ``docker-compose.yml``) : ``./data/`` * Create a link to the ``slideviewerdata`` folder (containing the ``converted`` and ``uploaded`` folders amongst others) in the following directory (relative to ``docker-compose.yml``) : ``./data/`` Make sure there are appropriate read/write rights on these directories. ## Running the platform To create/start/restart all containers (in background mode), type the following command in the terminal **from the folder containing the docker-compose.yml file**: ``` docker-compose up -d ``` To stop the containers, type: ``` docker-compose stop ``` To remove all the containers (clean-up), type: ``` docker-compose down ``` ## Accessing the Web Viewer Wait for 1-2 minutes, then access your browser at ``http://localhost`` to access the Web Viewer. You can then log in with one of the following default user accounts defined in the ``docker-entrypoint.sh`` file in the ``desuto-couchdb`` directory: * User : ``user``, Password : ``userpass`` (Read-only access) * User : ``pathologist1``, Password : ``pathologistpass`` * User : ``pathologist2``, Password : ``pathologistpass``