Spaces:
Running
Running
Reworked OHIF docker build setup
Browse files- .docker/Viewer-v3.x/default.conf.template +0 -16
- .docker/Viewer-v3.x/default.conf_old.template +0 -21
- .docker/Viewer-v3.x/entrypoint.sh +0 -45
- .gitattributes +35 -0
- Dockerfile +44 -55
- README.md +5 -2
- app-config.js +28 -0
- nginx.conf +19 -23
- nginx_old.conf +0 -24
.docker/Viewer-v3.x/default.conf.template
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
server {
|
2 |
-
listen ${PORT} default_server;
|
3 |
-
listen [::]:${PORT} default_server;
|
4 |
-
location / {
|
5 |
-
root /usr/share/nginx/html;
|
6 |
-
index index.html index.htm;
|
7 |
-
try_files $uri $uri/ /index.html;
|
8 |
-
add_header Cross-Origin-Opener-Policy same-origin;
|
9 |
-
add_header Cross-Origin-Embedder-Policy require-corp;
|
10 |
-
add_header Cross-Origin-Resource-Policy same-origin;
|
11 |
-
proxy_set_header Host $host;
|
12 |
-
proxy_set_header X-Real-IP $remote_addr;
|
13 |
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
14 |
-
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
15 |
-
}
|
16 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.docker/Viewer-v3.x/default.conf_old.template
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
server {
|
2 |
-
listen ${PORT} default_server;
|
3 |
-
listen [::]:${PORT} default_server;
|
4 |
-
location / {
|
5 |
-
root /usr/share/nginx/html;
|
6 |
-
index index.html index.htm;
|
7 |
-
try_files $uri $uri/ /index.html;
|
8 |
-
add_header Cross-Origin-Opener-Policy same-origin;
|
9 |
-
add_header Cross-Origin-Embedder-Policy require-corp;
|
10 |
-
add_header Cross-Origin-Resource-Policy same-origin;
|
11 |
-
proxy_set_header Host $host;
|
12 |
-
proxy_set_header X-Real-IP $remote_addr;
|
13 |
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
14 |
-
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
15 |
-
}
|
16 |
-
error_page 500 502 503 504 /50x.html;
|
17 |
-
location = /50x.html {
|
18 |
-
location = /50x.html {
|
19 |
-
root /usr/share/nginx/html;
|
20 |
-
}
|
21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.docker/Viewer-v3.x/entrypoint.sh
DELETED
@@ -1,45 +0,0 @@
|
|
1 |
-
#!/bin/sh
|
2 |
-
|
3 |
-
if [ -n "$SSL_PORT" ]
|
4 |
-
then
|
5 |
-
envsubst '${SSL_PORT}:${PORT}' < /usr/src/default.ssl.conf.template > /etc/nginx/conf.d/default.conf
|
6 |
-
else
|
7 |
-
envsubst '${PORT}' < /usr/src/default.conf.template > /etc/nginx/conf.d/default.conf
|
8 |
-
fi
|
9 |
-
|
10 |
-
if [ -n "$APP_CONFIG" ]
|
11 |
-
then
|
12 |
-
echo "$APP_CONFIG" > /usr/share/nginx/html/app-config.js
|
13 |
-
fi
|
14 |
-
|
15 |
-
if [ -n "$CLIENT_ID" ] || [ -n "$HEALTHCARE_API_ENDPOINT" ]
|
16 |
-
then
|
17 |
-
# If CLIENT_ID is specified, use the google.js configuration with the modified ID
|
18 |
-
if [ -n "$CLIENT_ID" ]
|
19 |
-
then
|
20 |
-
echo "Google Cloud Healthcare \$CLIENT_ID has been provided: "
|
21 |
-
echo "$CLIENT_ID"
|
22 |
-
echo "Updating config..."
|
23 |
-
|
24 |
-
# - Use SED to replace the CLIENT_ID that is currently in google.js
|
25 |
-
sed -i -e "s/YOURCLIENTID.apps.googleusercontent.com/$CLIENT_ID/g" /usr/share/nginx/html/google.js
|
26 |
-
fi
|
27 |
-
|
28 |
-
# If HEALTHCARE_API_ENDPOINT is specified, use the google.js configuration with the modified endpoint
|
29 |
-
if [ -n "$HEALTHCARE_API_ENDPOINT" ]
|
30 |
-
then
|
31 |
-
echo "Google Cloud Healthcare \$HEALTHCARE_API_ENDPOINT has been provided: "
|
32 |
-
echo "$HEALTHCARE_API_ENDPOINT"
|
33 |
-
echo "Updating config..."
|
34 |
-
|
35 |
-
# - Use SED to replace the HEALTHCARE_API_ENDPOINT that is currently in google.js
|
36 |
-
sed -i -e "s+https://healthcare.googleapis.com/v1+$HEALTHCARE_API_ENDPOINT+g" /usr/share/nginx/html/google.js
|
37 |
-
fi
|
38 |
-
|
39 |
-
# - Copy google.js to overwrite app-config.js
|
40 |
-
cp /usr/share/nginx/html/google.js /usr/share/nginx/html/app-config.js
|
41 |
-
fi
|
42 |
-
|
43 |
-
echo "Starting Nginx to serve the OHIF Viewer..."
|
44 |
-
|
45 |
-
exec "$@"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.gitattributes
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
CHANGED
@@ -1,67 +1,56 @@
|
|
1 |
-
FROM
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
#RUN echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories
|
8 |
-
#RUN apk add -U shadow
|
9 |
-
|
10 |
-
# change user ID of "nginx" to 1000 to work with HF spaces
|
11 |
-
# RUN find / -uid 1000 -exec chown -h 1000 {} +
|
12 |
-
#RUN usermod -u 1000 nginx
|
13 |
-
|
14 |
-
USER nginx
|
15 |
-
|
16 |
-
# Set port as environmental variable for reverse proxy
|
17 |
-
# ENV PORT=80
|
18 |
-
|
19 |
-
RUN ls
|
20 |
-
|
21 |
-
# Set home to the user's home directory
|
22 |
-
ENV HOME=/home/user \
|
23 |
-
PATH=/home/user/.local/bin:$PATH
|
24 |
|
25 |
-
|
26 |
-
WORKDIR $HOME/app
|
27 |
|
28 |
-
#
|
29 |
-
#COPY
|
|
|
|
|
30 |
|
31 |
-
#
|
32 |
-
#
|
|
|
|
|
33 |
|
34 |
-
#
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
#COPY --chown=nginx nginx.conf /etc/nginx/sites-available/default
|
38 |
-
#COPY --chown=nginx .docker/Viewer-v3.x/default.conf.template /usr/src/default.conf.template
|
39 |
-
COPY --chown=nginx:nginx .docker/Viewer-v3.x /usr/src
|
40 |
-
RUN chmod 777 /usr/src/entrypoint.sh
|
41 |
|
42 |
-
#
|
|
|
|
|
43 |
|
44 |
-
|
45 |
|
46 |
-
#
|
|
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
#
|
|
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
#
|
55 |
-
|
56 |
-
#
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
65 |
CMD ["nginx", "-g", "daemon off;"]
|
66 |
-
|
67 |
-
#CMD ["bash", "run.sh"]
|
|
|
1 |
+
FROM node:16.15.0-slim as json-copier
|
2 |
|
3 |
+
RUN mkdir /usr/src/app
|
4 |
+
WORKDIR /usr/src/app
|
5 |
+
# Clone the application
|
6 |
+
RUN apt-get update && apt-get install -y git
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
+
RUN git clone --recursive https://github.com/OHIF/Viewers.git .
|
|
|
9 |
|
10 |
+
# # COPY ["package.json", "yarn.lock", "preinstall.js", "./"]
|
11 |
+
# COPY extensions /usr/src/app/extensions
|
12 |
+
# COPY modes /usr/src/app/modes
|
13 |
+
# COPY platform /usr/src/app/platform
|
14 |
|
15 |
+
# Find and remove non-package.json files
|
16 |
+
#RUN find extensions \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf
|
17 |
+
#RUN find modes \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf
|
18 |
+
#RUN find platform \! -name "package.json" -mindepth 2 -maxdepth 2 -print | xargs rm -rf
|
19 |
|
20 |
+
# Copy Files
|
21 |
+
FROM node:16.15.0-slim as builder
|
22 |
+
RUN apt-get update && apt-get install -y build-essential python3
|
23 |
+
RUN mkdir /usr/src/app
|
24 |
+
WORKDIR /usr/src/app
|
25 |
|
26 |
+
COPY --from=json-copier /usr/src/app .
|
|
|
|
|
|
|
|
|
27 |
|
28 |
+
# Run the install before copying the rest of the files
|
29 |
+
RUN yarn config set workspaces-experimental true
|
30 |
+
RUN yarn install --frozen-lockfile --verbose
|
31 |
|
32 |
+
COPY . .
|
33 |
|
34 |
+
# To restore workspaces symlinks
|
35 |
+
RUN yarn install --frozen-lockfile --verbose
|
36 |
|
37 |
+
ENV PATH /usr/src/app/node_modules/.bin:$PATH
|
38 |
+
ENV QUICK_BUILD true
|
39 |
+
# ENV GENERATE_SOURCEMAP=false
|
40 |
+
# ENV REACT_APP_CONFIG=config/default.js
|
41 |
|
42 |
+
RUN yarn run build
|
43 |
+
# Stage 3: Bundle the built application into a Docker container
|
44 |
+
# which runs Nginx using Alpine Linux
|
45 |
+
FROM nginxinc/nginx-unprivileged:1.25-alpine as final
|
46 |
+
#RUN apk add --no-cache bash
|
47 |
+
USER nginx
|
48 |
+
COPY --chown=nginx:nginx nginx.conf /etc/nginx/conf.d/default.conf
|
49 |
+
COPY --chown=nginx:nginx app-config.js /usr/share/nginx/html/app-config.js
|
50 |
+
COPY --from=builder /usr/src/app/platform/app/dist /usr/share/nginx/html
|
51 |
+
# In entrypoint.sh, app-config.js might be overwritten, so chmod it to be writeable.
|
52 |
+
# The nginx user cannot chmod it, so change to root.
|
53 |
+
USER root
|
54 |
+
RUN chmod 666 /usr/share/nginx/html/app-config.js
|
55 |
+
USER nginx
|
56 |
CMD ["nginx", "-g", "daemon off;"]
|
|
|
|
README.md
CHANGED
@@ -3,10 +3,13 @@ title: 'dsa4hf: Project to showcase AI solutions for medical applications in OHI
|
|
3 |
colorFrom: indigo
|
4 |
colorTo: indigo
|
5 |
sdk: docker
|
6 |
-
app_port: 3000
|
7 |
emoji: 🔬
|
8 |
pinned: false
|
9 |
license: mit
|
|
|
|
|
|
|
|
|
10 |
---
|
11 |
|
12 |
# ohif4hf
|
@@ -26,7 +29,7 @@ When the solution is ready, the website should be accessible on [Hugging Face](h
|
|
26 |
```
|
27 |
git clone https://github.com/andreped/ohif4hf.git
|
28 |
docker build --no-cache -t ohif4hf .
|
29 |
-
docker run -p
|
30 |
```
|
31 |
|
32 |
To go inside docker image and debug, at the bottom of the Dockerfile, add `ENTRYPOINT [ "/bin/sh" ]` before running.
|
|
|
3 |
colorFrom: indigo
|
4 |
colorTo: indigo
|
5 |
sdk: docker
|
|
|
6 |
emoji: 🔬
|
7 |
pinned: false
|
8 |
license: mit
|
9 |
+
custom_headers:
|
10 |
+
cross-origin-embedder-policy: require-corp
|
11 |
+
cross-origin-opener-policy: same-origin
|
12 |
+
cross-origin-resource-policy: cross-origin
|
13 |
---
|
14 |
|
15 |
# ohif4hf
|
|
|
29 |
```
|
30 |
git clone https://github.com/andreped/ohif4hf.git
|
31 |
docker build --no-cache -t ohif4hf .
|
32 |
+
docker run -p 4444:7860 ohif4hf
|
33 |
```
|
34 |
|
35 |
To go inside docker image and debug, at the bottom of the Dockerfile, add `ENTRYPOINT [ "/bin/sh" ]` before running.
|
app-config.js
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
window.config = {
|
2 |
+
routerBasename: "/",
|
3 |
+
extensions: [],
|
4 |
+
modes: [],
|
5 |
+
showStudyList: true,
|
6 |
+
dataSources: [
|
7 |
+
{
|
8 |
+
namespace: "@ohif/extension-default.dataSourcesModule.dicomweb",
|
9 |
+
sourceName: "dicomweb",
|
10 |
+
configuration: {
|
11 |
+
friendlyName: "dcmjs DICOMWeb Server",
|
12 |
+
name: "DCM4CHEE",
|
13 |
+
wadoUriRoot: "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado",
|
14 |
+
qidoRoot: "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
|
15 |
+
wadoRoot: "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
|
16 |
+
qidoSupportsIncludeField: true,
|
17 |
+
supportsReject: true,
|
18 |
+
imageRendering: "wadors",
|
19 |
+
thumbnailRendering: "wadors",
|
20 |
+
enableStudyLazyLoad: true,
|
21 |
+
supportsFuzzyMatching: true,
|
22 |
+
supportsWildcard: true,
|
23 |
+
omitQuotationForMultipartRequest: true,
|
24 |
+
},
|
25 |
+
},
|
26 |
+
],
|
27 |
+
defaultDataSourceName: "dicomweb",
|
28 |
+
};
|
nginx.conf
CHANGED
@@ -1,24 +1,20 @@
|
|
1 |
server {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
root
|
6 |
-
index
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
proxy_set_header Upgrade $http_upgrade;
|
22 |
-
proxy_set_header Connection "upgrade";
|
23 |
-
}
|
24 |
-
}
|
|
|
1 |
server {
|
2 |
+
listen 7860 default_server;
|
3 |
+
listen [::]:7860 default_server;
|
4 |
+
location / {
|
5 |
+
root /usr/share/nginx/html;
|
6 |
+
index index.html index.htm;
|
7 |
+
try_files $uri $uri/ /index.html;
|
8 |
+
add_header Cross-Origin-Opener-Policy same-origin;
|
9 |
+
add_header Cross-Origin-Embedder-Policy require-corp;
|
10 |
+
add_header Cross-Origin-Resource-Policy cross-origin;
|
11 |
+
proxy_set_header Host $host;
|
12 |
+
proxy_set_header X-Real-IP $remote_addr;
|
13 |
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
14 |
+
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
15 |
+
}
|
16 |
+
error_page 500 502 503 504 /50x.html;
|
17 |
+
location = /50x.html {
|
18 |
+
root /usr/share/nginx/html;
|
19 |
+
}
|
20 |
+
}
|
|
|
|
|
|
|
|
nginx_old.conf
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
server {
|
2 |
-
listen 3000 default_server;
|
3 |
-
listen [::]:3000 default_server;
|
4 |
-
|
5 |
-
root /usr/share/nginx/html;
|
6 |
-
index index.html index.htm;
|
7 |
-
|
8 |
-
server_name _;
|
9 |
-
location / {
|
10 |
-
# serve OHIF 3000
|
11 |
-
proxy_pass http://localhost:80;
|
12 |
-
proxy_set_header Host $host;
|
13 |
-
proxy_set_header X-Real-IP $remote_addr;
|
14 |
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
15 |
-
#proxy_set_header X-Forwarded-Proto $scheme;
|
16 |
-
proxy_set_header X-Forwarded-Proto http;
|
17 |
-
proxy_set_header X-Forwarded-Ssl off;
|
18 |
-
proxy_set_header X-Url-Scheme http;
|
19 |
-
proxy_buffering off;
|
20 |
-
proxy_http_version 1.1;
|
21 |
-
proxy_set_header Upgrade $http_upgrade;
|
22 |
-
proxy_set_header Connection "upgrade";
|
23 |
-
}
|
24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|