Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
src/nrtk_explorer/test_data/
.venv/
vue-components/node_modules/
2 changes: 2 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
FROM kitware/trame:py3.10-glvnd-2024-09
COPY --chown=trame-user:trame-user ./docker /deploy
ENV NRTK_EXPLORER_NUM_IMAGES=16
RUN mv /deploy/config/apache/001-trame.tpl /opt/trame/apache.tpl
RUN /opt/trame/entrypoint.sh build
37 changes: 37 additions & 0 deletions docker/config/apache/001-trame.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<VirtualHost *:80>
DocumentRoot /deploy/server/www
ErrorLog /deploy/server/logs/apache/error.log
CustomLog /deploy/server/logs/apache/access.log combined

Alias TRAME_URL_PREFIX /deploy/server/www/

<Directory /deploy/server/www>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
FallbackResource /index.html
</Directory>

# Set CORS headers
Header set Access-Control-Allow-Origin "*"

# Handle launcher forwarding
ProxyPass TRAME_URL_PREFIX/launcher http://localhost:9000/paraview
ProxyPassReverse TRAME_URL_PREFIX/launcher http://localhost:9000/paraview

# Handle paraview forwarding
ProxyPass TRAME_URL_PREFIX/paraview http://localhost:9000/paraview
ProxyPassReverse TRAME_URL_PREFIX/paraview http://localhost:9000/paraview

# Handle WebSocket forwarding
RewriteEngine On
RewriteMap session-to-port txt:/opt/trame/proxy-mapping.txt
RewriteCond %{QUERY_STRING} ^sessionId=(.*)&path=(.*)$ [NC]
RewriteRule ^TRAME_URL_PREFIX/proxy.*$ ws://${session-to-port:%1}/%2 [P]

# Handle API forwarding
RewriteRule ^TRAME_URL_PREFIX/api/(.*)/original-image/(.*)$ http://${session-to-port:$1}/original-image/$2 [P,L]
RewriteRule ^TRAME_URL_PREFIX/api/(.*)/transform-image/(.*)$ http://${session-to-port:$1}/transform-image/$2 [P,L]
RewriteRule ^TRAME_URL_PREFIX/api/(.*)/(.*)$ http://${session-to-port:$1}/$2 [P,L]

</VirtualHost>
Binary file removed docker/nrtk_explorer-0.6.0-py2.py3-none-any.whl
Binary file not shown.
8 changes: 4 additions & 4 deletions docker/setup/apps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ trame:
www_modules:
- nrtk_explorer.module
cmd:
- python
- -m
- nrtk_explorer.app.main
- nrtk-explorer
- --session-id
- ${id}
- --host
- ${host}
- --port
Expand All @@ -14,4 +14,4 @@ trame:
- --server
- --banner
- --dataset
- /data/OIRDS_v1_0/oirds.json
- /data/coco-od-2017/mini_val2017.json
1 change: 0 additions & 1 deletion docker/setup/initialize.sh

This file was deleted.

3 changes: 1 addition & 2 deletions docker/setup/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
nrtk[headless]
# nrtk-explorer
nrtk-explorer
11 changes: 10 additions & 1 deletion src/nrtk_explorer/app/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
DEFAULT_DATASETS = [
f"{DIR_NAME}/coco-od-2017/test_val2017.json",
]
NUM_IMAGES_DEFAULT = 500
NUM_IMAGES_DEFAULT = os.environ.get("NRTK_EXPLORER_NUM_IMAGES", 500)
NUM_IMAGES_DEBOUNCE_TIME = 0.3 # seconds


Expand Down Expand Up @@ -101,6 +101,14 @@ def dir_path(arg):
"help": "Choose which application features to enable based on a preset name.",
},
},
"session_id": {
"flags": ["--session-id"],
"params": {
"default": "",
"required": False,
"help": "Session ID for deploying to a remote server using Docker",
},
},
}


Expand All @@ -115,6 +123,7 @@ def __init__(self, server=None, **kwargs):
)

self.context.repository = config["repository"]
self.context.session = config["session_id"]
self.state.repository_datasets = [
str(path) for path in discover_datasets(self.context.repository)
]
Expand Down
10 changes: 7 additions & 3 deletions src/nrtk_explorer/app/images/image_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ def __init__(self, server, images: Images):
self._state_id_to_dataset_id,
)

self.url_prefix = (
f"/api/{self.server.context.session}" if self.server.context.session else ""
)

change_checker(self.server.state, "dataset_ids")(self.on_dataset_ids_change)

@controller.add("on_server_bind")
Expand Down Expand Up @@ -99,7 +103,7 @@ def on_dataset_ids_change(self, old_ids, new_ids):
orig_key = str(self._id_counter)
self._state_id_to_dataset_id[orig_key] = id
self.server.state[dataset_id_to_image_id(id)] = (
f"/{ORIGINAL_IMAGE_ENDPOINT}/{orig_key}"
f"{self.url_prefix}/{ORIGINAL_IMAGE_ENDPOINT}/{orig_key}"
)

# Transform
Expand All @@ -108,7 +112,7 @@ def on_dataset_ids_change(self, old_ids, new_ids):
self._state_id_to_dataset_id[trans_key] = id
self._transform_keys.add(trans_key)
self.server.state[dataset_id_to_transformed_image_id(id)] = (
f"/{TRANSFORM_IMAGE_ENDPOINT}/{trans_key}"
f"{self.url_prefix}/{TRANSFORM_IMAGE_ENDPOINT}/{trans_key}"
)

@controller.add("apply_transform")
Expand All @@ -119,5 +123,5 @@ def refresh_transform_images(self, **kwargs):
self._state_id_to_dataset_id[trans_key] = id
self._transform_keys.add(trans_key)
self.server.state[dataset_id_to_transformed_image_id(id)] = (
f"/{TRANSFORM_IMAGE_ENDPOINT}/{trans_key}"
f"{self.url_prefix}/{TRANSFORM_IMAGE_ENDPOINT}/{trans_key}"
)
Loading