version: "3" services: # Proxy facade for all services proxy: build: ./desuto-proxy depends_on: - mysql - couchdb - uploads - images - paradise-gf - retrieval - webviewer - iipsrv - slideprops ports: - 80:80 # MySQL server for storing image information (URLs, modalities, etc.) mysql: image: mariadb restart: always environment: MYSQL_ROOT_PASSWORD: $$MARIA-15-mysql! MYSQL_DATABASE: paradise MYSQL_USER: paradise MYSQL_PASSWORD: $$PWDforParaD1SE! volumes: - ./data/all-dmli-pubmed-info.sql:/docker-entrypoint-initdb.d/dump.sql expose: - 3306 # CouchDB server for storing image annotation data couchdb: build: ./desuto-couchdb restart: always expose: - 5984 # nginx server for serving images that are uploaded to the retrieval interface uploads: image: nginx:alpine restart: always volumes: - upload-volume:/usr/share/nginx/html/uploads/:ro expose: - 80 # nginx server for serving images (patches) contained in the visual indices images: image: nginx:alpine restart: always volumes: - ./data/images/:/usr/share/nginx/html/images/:ro expose: - 80 # GlassFish application server hosting the ParaDISE engine and WebServices paradise-gf: build: ./paradise-gf volumes: - upload-volume:/uploads/ - ./data/paradise-files/:/data/paradise environment: - ADMIN_PASSWORD=$$pWd4glassF1SH! expose: - 8080 - 4848 # Apache server for the retrieval interface retrieval: build: context: ./desuto-retrieval args: - PARADISE_ROOT_URL=${PARADISE_ROOT_URL} - IIP_ROOT_URL=${IIP_ROOT_URL} - VIEWER_ROOT_URL=${VIEWER_ROOT_URL} - SLIDEPROPS_ROOT_URL=${SLIDEPROPS_ROOT_URL} restart: always volumes: - ${SLIDEVIEWERDATA_LOCAL_PATH}:/slideviewerdata expose: - 80 # Node.js server for the Web viewer and annotation tool webviewer: build: context: ./desuto-viewer args: - RETRIEVAL_INTERFACE_ROOT_URL=${RETRIEVAL_INTERFACE_ROOT_URL} - PARADISE_ROOT_URL=${PARADISE_ROOT_URL} - IIP_ROOT_URL=${IIP_ROOT_URL} - SLIDEPROPS_ROOT_URL=${SLIDEPROPS_ROOT_URL} - COUCHDB_FRONTEND_ROOT_URL=${COUCHDB_FRONTEND_ROOT_URL} - COUCHDB_BACKEND_ROOT_URL=${COUCHDB_BACKEND_ROOT_URL} volumes: - ${SLIDEVIEWERDATA_LOCAL_PATH}:/slideviewerdata expose: - 3000 # IIPImage server for generating the image patches iipsrv: build: ./desuto-iipsrv volumes: - ${SLIDEVIEWERDATA_LOCAL_PATH}:/slideviewerdata # Python server for getting slide properties using openslide slideprops: build: ./desuto-slideproperties volumes: - ${SLIDEVIEWERDATA_LOCAL_PATH}:/slideviewerdata # Shared volume for uploaded images volumes: upload-volume: