diff --git a/docker-compose.override.yml b/docker-compose.override.yml
new file mode 100644
index 0000000..644b51b
--- /dev/null
+++ b/docker-compose.override.yml
@@ -0,0 +1,27 @@
+version: "3"
+services:
+
+  # Node.js server for the Web viewer and annotation tool
+  webviewer:
+    ports:
+      - 3000:3000
+      - 9229:9229
+    command: ["node", "--inspect=0.0.0.0:9229", "app.js"]
+    volumes:
+      - ./desuto-viewer/Desuto-webviewer:/usr/src/app
+
+  # 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:
diff --git a/docker-compose.yml b/docker-compose.yml
index 070ed60..c39e99c 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,116 +1,133 @@
 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
+    environment:
+      - COUCHDB_USER=${COUCHDB_ADMIN_USER}
+      - COUCHDB_PASSWORD=${COUCHDB_ADMIN_PASS}
+      - COUCHDB_PROTOCOL=${COUCHDB_PROTOCOL}
+      - COUCHDB_HOST=${COUCHDB_HOST}
+      - COUCHDB_PORT=${COUCHDB_PORT}
+      - COUCHDB_DB_NAME=${COUCHDB_DB_NAME}
+    ports:
+      - 5984: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}
+        - RETRIEVAL_ROOT_URL=${RETRIEVAL_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_ROOT_URL=${COUCHDB_ROOT_URL}
         - COUCHDB_BACKEND_ROOT_URL=${COUCHDB_BACKEND_ROOT_URL}
+        - COUCHDB_DB_NAME=${COUCHDB_DB_NAME}
+        - WSI_BASE_DIR=${WSI_BASE_DIR}
+    environment:
+      - ROOT_URL=${VIEWER_ROOT_URL}
+      - COUCHDB_ROOT_URL=${COUCHDB_ROOT_URL}
+      - COUCHDB_BACKEND_ROOT_URL=${COUCHDB_BACKEND_ROOT_URL}
+      - TEMP_DIR=${TEMP_DIR}
+      - WSI_BASE_DIR=${WSI_BASE_DIR}
+      - WSI_UPLOADED_DIR=${WSI_UPLOADED_DIR}
+      - WSI_CONVERTED_DIR=${WSI_CONVERTED_DIR}
+      - WSI_OVERLAYS_DIR=${WSI_OVERLAYS_DIR}
     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: