Skip to content

Commit 9b76691

Browse files
bendhouseartTim BudrasAnthony Galassiaebuti1021kiwimarc
authored
Update Master Branch with Development Changes (#45)
* updating docker compose to use nginx for forwarding * added nginx config and updated docker file works on mac * added folder for certs * had to bodge npm installs, husky, and vite to get healthy containers on osx * updated docker compose, health checks all pass. CORS still an issue * add nginx config * incremental progress is progress * redirects all work when running locally * ssl works with the addition of a cert, key, and the password for it * create standalone production config * consolidating variables and options into 1 launch script and 1 .env file * updated lint check to use prettier instead of npm 'style-check' and 'lint-check' * update package-lock.json * bringing more in line with buti1021's PR, while 'stream-lining' env and entrypoints * update docker ignore and build * works well enough in production, 'dev' could still use some tweaks * what changes? * Apply suggestions from code review update nginx.conf * got local running again by ditching nginx * remove nginx_var * Update example.env * remove last dev nginx bits * certs and keys path as environment * enable telemetry via build in compose_profile env var * revert vite config changes * Nru self signed (#29) * added setup script, removed password for ssl certs * updated handler and setup.sh * added acquisition date and time fields to intermediate sidecar files and scrub those same dates from BIDS Finalized output sidecars * added instructions in launch.sh * Nru self signed (#31) * added setup script, removed password requirment for ssl certs * updated handler and setup.sh * added acquisiiton date and time fields * scrub dates from BIDS Finalized output * added instructions in launch.sh * fix compose that got bungled during merge. * Update handler/Dockerfile * Merge Apptainer Into Development Branch (#34) * Updating bendhouseart/ezbids:master from buti1021/ezbids:add-nginx-forwarding (#1) * updating docker compose to use nginx for forwarding * added nginx config and updated docker file works on mac * added folder for certs * had to bodge npm installs, husky, and vite to get healthy containers on osx * updated docker compose, health checks all pass. CORS still an issue * add nginx config * ssl works with the addition of a cert, key, and the password for it * create standalone production config * consolidating variables and options into 1 launch script and 1 .env file * updated lint check to use prettier instead of npm 'style-check' and 'lint-check' * update package-lock.json * bringing more in line with buti1021's PR, while 'stream-lining' env and entrypoints * update docker ignore and build * Update example.env * certs and keys path as environment * enable telemetry via build in compose_profile env var * revert vite config changes * remove old files --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> * Create dependabot.yml * Adding apptainer support (#28) * Added .gitignore and README * Updated README for formatting * Adding apptainer scripts --------- Co-authored-by: Marc Cummings <[email protected]> * Updated .gitignore, added build script * Update nginx/production_nginx.conf --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> Co-authored-by: Marc Cummings <[email protected]> Co-authored-by: Marc Cummings <[email protected]> * added argument for using IP or custom host name in self signed * updated self signed script to accept IP address or hostname as argument * Auto index sessions by date (#37) * update handler dockerfile * testing inspection and moving of dicoms * rename and update sort * sorts PET dicom files into sub/ses folders then converts * presort all dicoms into subject/session folders if env var is present (#38) * Apptainer (#39) * Updating bendhouseart/ezbids:master from buti1021/ezbids:add-nginx-forwarding (#1) * updating docker compose to use nginx for forwarding * added nginx config and updated docker file works on mac * added folder for certs * had to bodge npm installs, husky, and vite to get healthy containers on osx * updated docker compose, health checks all pass. CORS still an issue * add nginx config * ssl works with the addition of a cert, key, and the password for it * create standalone production config * consolidating variables and options into 1 launch script and 1 .env file * updated lint check to use prettier instead of npm 'style-check' and 'lint-check' * update package-lock.json * bringing more in line with buti1021's PR, while 'stream-lining' env and entrypoints * update docker ignore and build * Update example.env * certs and keys path as environment * enable telemetry via build in compose_profile env var * revert vite config changes * remove old files --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> * Create dependabot.yml * Adding apptainer support (#28) * Added .gitignore and README * Updated README for formatting * Adding apptainer scripts --------- Co-authored-by: Marc Cummings <[email protected]> * Updated .gitignore, added build script * Update nginx/production_nginx.conf * Delete .github/dependabot.yml --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> Co-authored-by: Marc Cummings <[email protected]> Co-authored-by: Marc Cummings <[email protected]> * Apptainer (#40) * Updating bendhouseart/ezbids:master from buti1021/ezbids:add-nginx-forwarding (#1) * updating docker compose to use nginx for forwarding * added nginx config and updated docker file works on mac * added folder for certs * had to bodge npm installs, husky, and vite to get healthy containers on osx * updated docker compose, health checks all pass. CORS still an issue * add nginx config * ssl works with the addition of a cert, key, and the password for it * create standalone production config * consolidating variables and options into 1 launch script and 1 .env file * updated lint check to use prettier instead of npm 'style-check' and 'lint-check' * update package-lock.json * bringing more in line with buti1021's PR, while 'stream-lining' env and entrypoints * update docker ignore and build * Update example.env * certs and keys path as environment * enable telemetry via build in compose_profile env var * revert vite config changes * remove old files --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> * Create dependabot.yml * Adding apptainer support (#28) * Added .gitignore and README * Updated README for formatting * Adding apptainer scripts --------- Co-authored-by: Marc Cummings <[email protected]> * Updated .gitignore, added build script * Update nginx/production_nginx.conf * Delete .github/dependabot.yml --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> Co-authored-by: Marc Cummings <[email protected]> Co-authored-by: Marc Cummings <[email protected]> * added placeable tmp location and TSE sequence (#42) * fixed no MR images found * fix docker compose * updated paths now searching for multiple dicom extensions * remove apptainer (#43) * Containerize Node/NPM (#44) This PR "eliminates" development mode to help with build reproducibility. Previously, Node would install/build dependencies on the host and then mount them into each container via Docker Compose. While Docker Compose was initially used as a development environment it's been increasingly used as a method of deployment for on premise installations of ezBIDS. This PR helps to limit the variability introduced during the build process by the increasing number of sites, users, and architectures (Apple Silicon). Development mode will be re-introduced (hot loading/mounting) of code folders at a future date. For now, the focus is on repeatability of deployments over developer ease. * Moving node modules from being mounted to being built in the containers. * Nginx and localhost:3000 compose versions both working * Updated readme, renamed from docker-compose-production.yml to nginx * Move keys into containers (#47) Updated more steps to take place in containers and picked sane env defaults. * added compile from tsc to js into handler container * update default env's, add key placement into containers * Update docker-compose.yml * Delete .github/dependabot.yml * fix typos --------- Co-authored-by: Tim Budras <[email protected]> Co-authored-by: Anthony Galassiae <[email protected]> Co-authored-by: buti1021 <[email protected]> Co-authored-by: Marc Cummings <[email protected]> Co-authored-by: Marc Cummings <[email protected]>
1 parent 243723d commit 9b76691

19 files changed

+704
-107
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@ api/*.js.map
3838

3939
# ssl certs we ignore the content of the folder but keep the folder around.
4040
nginx/ssl/*
41-
!nginx/ssl/.gitkeep
41+
!nginx/ssl/.gitkeep
42+
*__pycache__*

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ COPY . /app
44

55
WORKDIR /app
66

7+
# generate keys for api
8+
RUN ./generate_keys.sh
9+
710
RUN npm install -g [email protected] pm2 typescript tsc-watch
811

912
# build the api and the ui

README.md

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,123 @@ Users do not need to organize their uploaded data in any specific manner, and us
3131

3232
Should users feel the need to anonymize data before uploading, we strongly recommend that subjects (and sessions, if applicable) be organized into subject (and session) folders, with explicit labeling of the preferred subjects (and sessions) IDs (e.g. `MRI_data/sub-01/ses-01/DICOMS`). Failure to do so for non-anonymized data may result in an inaccurate *first guess* and require additional edits in the web browser.
3333

34-
If users wish to install ezBIDS locally, to ensure that data do not leave their institution site, please see [here](https://brainlife.io/docs/using_ezBIDS/#installing-ezbids-locally).
34+
#### Local Usage
35+
36+
There are two methods for deploying this service one for local use and another using nginx for sitewide deployments.
37+
38+
For users that can are not setting this service up for others it's recommended to run without nginx.
39+
40+
In either case, the initial setup requires configuring the local environment via
41+
a `.env` file. The first steps are to copy the `example.env` file in this repo
42+
to `.env`:
43+
44+
```bash
45+
cd ezbids_docker
46+
cp example.env .env
47+
```
48+
The env file you've created should look something like the following:
49+
50+
<details>
51+
52+
53+
```bash
54+
# Create/Copy this file as .env in the root of the project to set default environment variables
55+
56+
# insert your host name here, it should match your ssl certificate and/or the output
57+
# of echo $HOSTNAME
58+
SERVER_NAME=localhost
59+
60+
# Set the BRAINLIFE_USE_NGINX environment variable to true to use https"
61+
# (this will launch the services on port 443) and run with nginx/production_nginx.conf"
62+
# this will require providing the correct paths for the SSL_CERT_PATH, SSL_KEY_PATH and SSL_PASSWORD_PATH
63+
# with false the UI will run on 3000"
64+
BRAINLIFE_USE_NGINX=false
65+
66+
SSL_CERT_PATH=./nginx/ssl/sslcert.cert
67+
SSL_KEY_PATH=./nginx/ssl/sslcert.key
68+
SSL_PASSWORD_PATH=./nginx/ssl/sslpassword #if your key is not encrypted use an arbitrary path here
69+
70+
# Set the BRAINLIFE_AUTHENTICATION environment variable to true, if you're not running"
71+
# this with brainlife don't use."
72+
BRAINLIFE_AUTHENTICATION=false
73+
74+
# Set the BRAINLIFE_DEVELOPMENT enables additional debugging output and mounts
75+
# the ezbids repo/folder into the various containers default is false"
76+
BRAINLIFE_DEVELOPMENT=false
77+
78+
# Define which profiles to use, e.g. set to COMPOSE_PROFILES=telemetry to enable telemetry
79+
COMPOSE_PROFILES=
80+
81+
# Choose whether to pre-sort flat folders full of dicoms, if enabled ezBIDS will attempt
82+
# to organize a flat folder of dicoms into sub-< indexed subject number > and if applicable
83+
# ses-< indexed session number> folders.
84+
PRESORT=false
85+
86+
# can set a custom workingdir/temp dir all uploaded files and work will be performed in
87+
# this directory, defaults to /tmp in the docker compose file if it's not set here.
88+
EZBIDS_TMP_DIR=
89+
```
90+
91+
</details>
92+
93+
#### Environment Variable Details
94+
95+
- `BRAINLIFE_AUTHENTICATION`: This version of ezBIDS has only been tested without user authentication. You will want to keep this value set to false.
96+
- `PRESORT`: Enable this option if your data is a flat folder full of dicoms, otherwise it's best to organize your such that a single scan/session/modality is contained in it's own folder. In order to extract the necessary PET metadata (information from spreadsheets) this variable should be disabled with `false`
97+
- `EZBIDS_TMP_DIR`: By default ezBIDS will write data to `/tmp/ezbids-workdir`, you can change that default path by providing a different path here.
98+
- `BRAINLIFE_USE_NGINX`: Enable with `true` if you want to host this service to multiple clients. Nginx requires ssl certificates to function, you have the option of
99+
generating self signed or providing certificates from a registered authority.
100+
- `SERVER_NAME`: Defaults to local host, if using Nginx then set this to the host name matching the server/ssl certificate.
101+
102+
103+
#### Nginx Setup
104+
105+
There are some additional steps required for running this service with nginx and https, namely providing ssl certificates. To create self signed certificates run the
106+
`create_self_signed_certs.sh` script and provide the hostname/ipaddress of the host
107+
as the first argument. This will create all of the certificates you need and locate
108+
them in the `nginx/ssl/` folder. If you want to provide your own certificates place
109+
them manually in the `nginx/ssl/` folder and rename them to follow this convention:
110+
111+
`sslcert.cert`, `sslcert.key`, and if your certificate is encrypted provide the password file as `sslpassword`.
112+
113+
The Nginx folder exists solely to hold certs and configuration files:
114+
115+
```bash
116+
tree nginx/
117+
nginx/
118+
├── production_nginx.conf
119+
└── ssl
120+
├── sslpassword # optional file
121+
├── sslcert.cert
122+
└── sslcert.key
123+
124+
2 directories, 3 files
125+
```
126+
127+
If you're using a password make sure to uncomment the line in the nginx config file (`nginx/production_nginx.conf`) for that password file.
128+
129+
```nginx
130+
server {
131+
listen 443 ssl;
132+
ssl_certificate /etc/nginx/conf.d/ssl/sslcert.cert;
133+
ssl_certificate_key /etc/nginx/conf.d/ssl/sslcert.key;
134+
# password file is optional, un-comment and generate/rename your file if required
135+
#ssl_password_file /etc/nginx/conf.d/ssl/sslpassword;
136+
server_name $SERVER_NAME;
137+
client_max_body_size 1200M;
138+
}
139+
```
140+
141+
Once you've completed your configuring, you can start the application with the `launch.sh` script. It will export the variables set in the `.env` file to your environment and based on your choices launch ezBIDS at `localhost:3000` or `https://yourhostname/`
142+
143+
If you're switching between nginx or the localhost option make sure to rebuild the
144+
containers with:
145+
146+
```
147+
docker compose build -f docker-compose.yml (or docker-compose-nginx.yml) --build --no-cache
148+
```
149+
Using `--no-cache` might slow things down, but it's a way to ensure you don't run into issues with "stale" containers. The `--parallel` flag can speed things up as it
150+
will build multiple containers at once.
35151

36152
### Authors
37153

api/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export const multer = {
66
dest: '/tmp/upload',
77
};
88
//directory to copy uploaded files (it needs to be on the same filesystem as multer incoming dir)
9-
export const workdir = '/tmp/ezbids-workdir';
9+
export const workdir = '/tmp';
1010
export const express = {
1111
host: '0.0.0.0',
1212
port: '8082',

create_self_signed_certs.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/bash
2+
3+
# we're going to use this script to walk us through how to:
4+
# 1) generate some self signed ssl certs, making sure to follow the following
5+
# the following files are required for https to work:"
6+
# nginx/ssl/sslcert.cert"
7+
# nginx/ssl/sslcert.key"
8+
# for https to work"
9+
# 2) copy the example.env file to .env
10+
# 3) Move the ssl certs to the nginx/ssl folder
11+
12+
# Use provided hostname or get it from system
13+
if [ -z "$1" ]; then
14+
HOSTNAME=$(hostname)
15+
echo "No hostname provided, using system hostname: $HOSTNAME"
16+
else
17+
HOSTNAME=$1
18+
echo "Using provided hostname: $HOSTNAME"
19+
fi
20+
21+
# you should modify statename, cityname, companyname ,and company section name to suit your installation
22+
23+
openssl req -x509 -newkey rsa:4096 -keyout sslcert.key -out sslcert.cert -sha256 -days 3650 -nodes -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=$HOSTNAME"
24+
25+
# now we need to move the sslcert.key and sslcert.cert to the nginx/ssl folder
26+
mv sslcert.key nginx/ssl/
27+
mv sslcert.cert nginx/ssl/
28+
29+
# now we need to setup the .env file, for simplicity's sake we create one here:
30+
cat <<EOL > .env
31+
SERVER_NAME=$HOSTNAME
32+
33+
NGINX_CONFIG_FILE=nginx/production_nginx.conf
34+
35+
BRAINLIFE_USE_NGINX=true
36+
37+
# Set the BRAINLIFE_AUTHENTICATION environment variable to true, if you're not running
38+
# this with brainlife don't use.
39+
BRAINLIFE_AUTHENTICATION=false
40+
41+
# Set the BRAINLIFE_DEVELOPMENT enables additional debugging output and mounts
42+
# the ezbids repo/folder into the various containers default is false
43+
BRAINLIFE_DEVELOPMENT=false
44+
45+
# Collect telemetry data and store it locally using the telemetry container
46+
HOST_LOCAL_TELEMETRY=false
47+
EOL
48+
49+
echo ".env file created successfully."

docker-compose-nginx.yml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
networks:
2+
ezbids:
3+
4+
services:
5+
mongodb:
6+
container_name: brainlife_ezbids-mongodb
7+
image: mongo:4.4.15
8+
platform: linux/amd64
9+
volumes:
10+
- /data/db
11+
healthcheck:
12+
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
13+
interval: 10s
14+
timeout: 10s
15+
retries:
16+
5
17+
networks:
18+
- ezbids
19+
20+
api:
21+
container_name: brainlife_ezbids-api
22+
build: .
23+
platform: linux/amd64
24+
volumes:
25+
- ${EZBIDS_TMP_DIR:-/tmp/ezbids-workdir}:/tmp
26+
depends_on:
27+
mongodb:
28+
condition: service_healthy
29+
healthcheck:
30+
test: ["CMD", "curl", "-f", "http://localhost:8082/health"]
31+
working_dir: /app/api
32+
command:
33+
./dev.sh
34+
environment:
35+
MONGO_CONNECTION_STRING: mongodb://mongodb:27017/ezbids
36+
BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION:-false}
37+
networks:
38+
- ezbids
39+
40+
handler:
41+
container_name: brainlife_ezbids-handler
42+
build:
43+
context: .
44+
dockerfile: handler/Dockerfile
45+
platform: linux/amd64
46+
volumes:
47+
- ${EZBIDS_TMP_DIR:-/tmp/ezbids-workdir}:/tmp
48+
depends_on:
49+
mongodb:
50+
condition: service_healthy
51+
api:
52+
condition: service_healthy
53+
environment:
54+
MONGO_CONNECTION_STRING: mongodb://mongodb:27017/ezbids
55+
PRESORT: ${PRESORT:-false}
56+
networks:
57+
- ezbids
58+
tty: true #turn on color for bids-validator output
59+
command: pm2 start handler.js --attach
60+
61+
ui:
62+
# we only run this container to build the UI pages to mount into a volume
63+
# for use in the nginx container.
64+
container_name: brainlife_ezbids-ui-builder
65+
build:
66+
context: ./ui/
67+
dockerfile: Dockerfile-production
68+
platform: linux/amd64
69+
environment:
70+
VITE_APIHOST: https://${SERVER_NAME}/api
71+
VITE_BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION:-false}
72+
volumes:
73+
- ui_dist:/ui/dist
74+
command: tail -f /dev/null # Keep container running
75+
76+
# by default this is not enabled, add COMPOSE_PROFILES=telemetry to your .env
77+
telemetry:
78+
container_name: brainlife_ezbids-telemetry
79+
build: ./telemetry
80+
platform: linux/amd64
81+
depends_on:
82+
- mongodb
83+
profiles: ["telemetry"]
84+
networks:
85+
- ezbids
86+
87+
nginx:
88+
container_name: brainlife_ezbids-nginx
89+
depends_on:
90+
- ui
91+
- api
92+
image: nginx:latest
93+
platform: linux/amd64
94+
ports:
95+
- 443:443
96+
networks:
97+
- ezbids
98+
volumes:
99+
# we do mount ssl certs and the built portions of the ui pages
100+
# in this docker compose versus the locally hosted one. The ssl mounts
101+
# are a necessity, while the ui_dist mount enables us to eliminate 1
102+
# container since we're serving the page with nginx.
103+
- ./nginx/ssl/:/etc/nginx/conf.d/ssl/
104+
- ./nginx/production_nginx.conf:/etc/nginx/conf.d/default.conf
105+
- ui_dist:/usr/share/nginx/html/ezbids:ro
106+
107+
volumes:
108+
ui_dist:

docker-compose.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ services:
2525
build: .
2626
platform: linux/amd64
2727
volumes:
28-
- ./api:/app/api
29-
- /tmp:/tmp
28+
- ${EZBIDS_TMP_DIR:-/tmp/ezbids-workdir/}:/tmp
3029
depends_on:
3130
mongodb:
3231
condition: service_healthy
@@ -37,26 +36,28 @@ services:
3736
./dev.sh
3837
environment:
3938
MONGO_CONNECTION_STRING: mongodb://mongodb:27017/ezbids
40-
BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION}
39+
BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION:-false}
4140
ports:
4241
- 8082:8082 #localhost runs on local browser to it needs to access api via host port
4342
networks:
4443
- ezbids
4544

4645
handler:
4746
container_name: brainlife_ezbids-handler
48-
build: ./handler
47+
build:
48+
context: .
49+
dockerfile: handler/Dockerfile
4950
platform: linux/amd64
5051
volumes:
51-
- .:/app
52-
- /tmp:/tmp
52+
- ${EZBIDS_TMP_DIR:-/tmp/ezbids-workdir}:/tmp
5353
depends_on:
5454
mongodb:
5555
condition: service_healthy
5656
api:
5757
condition: service_healthy
5858
environment:
5959
MONGO_CONNECTION_STRING: mongodb://mongodb:27017/ezbids
60+
PRESORT: ${PRESORT:-false}
6061
networks:
6162
- ezbids
6263
tty: true #turn on color for bids-validator output
@@ -68,11 +69,9 @@ services:
6869
- .env
6970
build: ./ui
7071
platform: linux/amd64
71-
volumes:
72-
- ./ui/src:/ui/src #don't copy node_modules which might be compiled for mac (vite won't work)
7372
environment:
74-
VITE_APIHOST: http://localhost:8082
75-
VITE_BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION}
73+
VITE_APIHOST: http://${SERVER_NAME:-localhost}:8082
74+
VITE_BRAINLIFE_AUTHENTICATION: ${BRAINLIFE_AUTHENTICATION:-false}
7675
healthcheck:
7776
test: ["CMD", "curl", "-f", "http://localhost:3000"]
7877
ports:

example.env

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
# of echo $HOSTNAME
55
SERVER_NAME=localhost
66

7-
# Set the BRAINLIFE_PRODUCTION environment variable to true to use https"
7+
8+
# Set the BRAINLIFE_USE_NGINX environment variable to true to use https"
89
# (this will launch the services on port 443) and run with nginx/production_nginx.conf"
910
# this will require providing the correct paths for the SSL_CERT_PATH, SSL_KEY_PATH and SSL_PASSWORD_PATH
1011
# with false the UI will run on 3000"
11-
BRAINLIFE_PRODUCTION=false
12+
BRAINLIFE_USE_NGINX=false
1213

1314
SSL_CERT_PATH=./nginx/ssl/sslcert.cert
1415
SSL_KEY_PATH=./nginx/ssl/sslcert.key
@@ -23,4 +24,13 @@ BRAINLIFE_AUTHENTICATION=false
2324
BRAINLIFE_DEVELOPMENT=false
2425

2526
# Define which profiles to use, e.g. set to COMPOSE_PROFILES=telemetry to enable telemetry
26-
COMPOSE_PROFILES=
27+
COMPOSE_PROFILES=
28+
29+
# Choose whether to pre-sort flat folders full of dicoms, if enabled ezBIDS will attempt
30+
# to organize a flat folder of dicoms into sub-< indexed subject number > and if applicable
31+
# ses-< indexed session number> folders.
32+
PRESORT=false
33+
34+
# can set a custom workingdir/temp dir all uploaded files and work will be performed in
35+
# this directory, defaults to /tmp/ezbids-workdir in the docker compose file if it's not set here.
36+
EZBIDS_TMP_DIR=

0 commit comments

Comments
 (0)