From b7cd80d155a8b3e1ebc5607b046544d45cf1921f Mon Sep 17 00:00:00 2001 From: Jan Friedli Date: Tue, 31 Mar 2020 20:33:06 +0200 Subject: made upload folder configurable --- Dockerfile.production | 5 ++++- README.md | 20 +++++++++----------- main.py | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Dockerfile.production b/Dockerfile.production index 025393f..35eb553 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -1,6 +1,6 @@ # https://github.com/nginxinc/docker-nginx-unprivileged/blob/master/stable/buster/Dockerfile -From registry.0xacab.org/georg/mat2-ci-images:debian +From debian:buster-slim LABEL maintainer="Mat-Web Co-Maintainer " @@ -8,6 +8,8 @@ WORKDIR /var/www/mat2-web COPY . /var/www/mat2-web +ENV MAT2_WEB_DOWNLOAD_FOLDER /app/upload + RUN set -x \ && addgroup --system --gid 101 nginx \ && adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos "nginx user" --shell /bin/false --uid 101 nginx \ @@ -16,6 +18,7 @@ RUN set -x \ ca-certificates \ nginx \ systemd \ + mat2 \ uwsgi \ uwsgi-plugin-python3 \ python3-pip \ diff --git a/README.md b/README.md index 071f216..dfa26b0 100644 --- a/README.md +++ b/README.md @@ -47,20 +47,18 @@ Nginx is the recommended web engine, but you can also use Apache if you prefer, by copying [this file](https://0xacab.org/jvoisin/mat2-web/tree/master/config/apache2.config) to your `/etc/apache2/sites-enabled/mat2-web` file. -Then configure the environment variable: `MAT2_ALLOW_ORIGIN_WHITELIST=https://myhost1.org https://myhost2.org` -Note that you can add multiple hosts from which you want to accept API requests. These need to be separated by -a space. -**IMPORTANT:** The default value if the variable is not set is: `Access-Control-Allow-Origin: *` - Configure the following environment variables: + - `MAT2_ALLOW_ORIGIN_WHITELIST=https://myhost1.org https://myhost2.org` + Note that you can add multiple hosts from which you want to accept API requests. These need to be separated by +a space. **IMPORTANT:** The default value if the variable is not set is: `Access-Control-Allow-Origin: *` - `MAT2_MAX_FILES_BULK_DOWNLOAD=10` Max number of files that can be grouped for a bulk download. - - `MAT2_MAX_FILE_AGE_FOR_REMOVAL=900` Seconds a file in the upload folder is kept. - After that it will be deleted. Default `15 * 60` - -This specifies the max number of files that can be bulk downloaded using the api. -Note: Each file has a max file size of 16mb + Note: Each file has a max file size of 16mb + - `MAT2_MAX_FILE_AGE_FOR_REMOVAL=900` Seconds a file in the upload folder is kept. + After that it will be deleted. Default `15 * 60` + - `MAT2_WEB_DOWNLOAD_FOLDER` Define the upload folder path. Defaults to: `./uploads/` + Finally, restart uWSGI and your web server: ``` @@ -197,7 +195,7 @@ repository: https://0xacab.org/jvoisin/mat2-web/container_registry ### Building the production image Build command: `docker build -f Dockerfile.production -t mat-web .` -Run it: `docker run -ti -p8181:8080 --read-only --tmpfs /tmp --tmpfs /run/uwsgi --tmpfs=/var/www/mat2-web/uploads mat-web:latest` +Run it: `docker run -ti -p8181:8080 --read-only --tmpfs /tmp --tmpfs /run/uwsgi --tmpfs=/app/uploads mat-web:latest` This does mount the upload folder as tmpfs and servers the app on `localhost:8181`. diff --git a/main.py b/main.py index db186d1..5c7f8e7 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from flask_cors import CORS def create_app(test_config=None): app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(32) - app.config['UPLOAD_FOLDER'] = './uploads/' + app.config['UPLOAD_FOLDER'] = os.environ.get('MAT2_WEB_DOWNLOAD_FOLDER', './uploads/') app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB app.config['CUSTOM_TEMPLATES_DIR'] = 'custom_templates' # optionally load settings from config.py -- cgit v1.3