]> git.lizzy.rs Git - cheatdb.git/commitdiff
Improve Docker configurations
authorrubenwardy <rw@rubenwardy.com>
Sat, 18 Jan 2020 01:20:32 +0000 (01:20 +0000)
committerrubenwardy <rw@rubenwardy.com>
Sat, 18 Jan 2020 01:20:32 +0000 (01:20 +0000)
.dockerignore
Dockerfile
app/__init__.py
app/blueprints/thumbnails/__init__.py
app/tasks/importtasks.py
app/utils.py
config.example.cfg
docker-compose.yml

index db3fdd0d84bb9a835414d7cf1e7c130020e22c4b..0c8c6cabbd695bf3b3c5670c68ce83f3fff0a883 100644 (file)
@@ -1,3 +1,5 @@
 .git
 data
 uploads
+*.pyc
+__pycache__
index c88d0a31f27d22c2e700f01b44187cb591a3b59a..00f683c897e0267453e4040fcb0dabe42b2d5350 100644 (file)
@@ -5,15 +5,18 @@ RUN groupadd -g 5123 cdb && \
 
 WORKDIR /home/cdb
 
+RUN mkdir /var/cdb
+RUN chown -R cdb:cdb /var/cdb
+
 COPY requirements.txt requirements.txt
-RUN pip install -r ./requirements.txt
+RUN pip install -r requirements.txt
 RUN pip install gunicorn
 
 COPY utils utils
-COPY config.cfg ./config.cfg
+COPY config.cfg config.cfg
 COPY migrations migrations
 COPY app app
 
-RUN mkdir /home/cdb/app/public/uploads/
-RUN chown cdb:cdb /home/cdb -R
+RUN chown -R cdb:cdb /home/cdb
+
 USER cdb
index 4c1512aae028f1061d095d6cca02b0678b658b2d..478f0d869bd7d3b2c6e39ff1a5b328eff8f554ca 100644 (file)
@@ -72,7 +72,7 @@ from flask_login import logout_user
 
 @app.route("/uploads/<path:path>")
 def send_upload(path):
-       return send_from_directory("public/uploads", path)
+       return send_from_directory(app.config['UPLOAD_DIR'], path)
 
 @menu.register_menu(app, ".help", "Help", order=19, endpoint_arguments_constructor=lambda: { 'path': 'help' })
 @app.route('/<path:path>/')
index 1f461022af6e6d70c965fdd041b9b8a0cefe8c1e..820d22810b2db6c86f84b3520247cb44186c425c 100644 (file)
@@ -25,10 +25,10 @@ from PIL import Image
 ALLOWED_RESOLUTIONS=[(100,67), (270,180), (350,233)]
 
 def mkdir(path):
+       assert(path != "" and path is not None)
        if not os.path.isdir(path):
                os.mkdir(path)
 
-mkdir("app/public/thumbnails/")
 
 def resize_and_crop(img_path, modified_path, size):
        img = Image.open(img_path)
@@ -65,10 +65,15 @@ def make_thumbnail(img, level):
 
        w, h = ALLOWED_RESOLUTIONS[level - 1]
 
-       mkdir("app/public/thumbnails/{:d}/".format(level))
+       upload_dir = current_app.config["UPLOAD_DIR"]
+       thumbnail_dir = current_app.config["THUMBNAIL_DIR"]
+       mkdir(thumbnail_dir)
 
-       cache_filepath  = "public/thumbnails/{:d}/{}".format(level, img)
-       source_filepath = "public/uploads/" + img
+       output_dir = os.path.join(thumbnail_dir, str(level))
+       mkdir(output_dir)
 
-       resize_and_crop("app/" + source_filepath, "app/" + cache_filepath, (w, h))
+       cache_filepath  = os.path.join(output_dir, img)
+       source_filepath = os.path.join(upload_dir, img)
+
+       resize_and_crop(source_filepath, cache_filepath, (w, h))
        return send_file(cache_filepath)
index ed435849cdd3c2c85d9612056df4facee8236b49..ebe8e1e21784300d9e1873d39f36b9cd1956d235 100644 (file)
@@ -389,7 +389,7 @@ def makeVCSRelease(id, branch):
 
                try:
                        filename = randomString(10) + ".zip"
-                       destPath = os.path.join("app/public/uploads", filename)
+                       destPath = os.path.join(app.config["UPLOAD_DIR"], filename)
                        with open(destPath, "wb") as fp:
                                repo.archive(fp, format="zip")
 
@@ -424,7 +424,7 @@ def importRepoScreenshot(id):
                        sourcePath = gitDir + "/screenshot." + ext
                        if os.path.isfile(sourcePath):
                                filename = randomString(10) + "." + ext
-                               destPath = os.path.join("app/public/uploads", filename)
+                               destPath = os.path.join(app.config["UPLOAD_DIR"], filename)
                                shutil.copyfile(sourcePath, destPath)
 
                                ss = PackageScreenshot()
index 102219def6dee67702fb7a7a8ca95abb7bb64131..5d1c8da2937623c8c0b4b94726ce7dc6207d40af 100644 (file)
@@ -46,6 +46,8 @@ def randomString(n):
        return ''.join(random.choice(string.ascii_lowercase + \
                        string.ascii_uppercase + string.digits) for _ in range(n))
 
+assert(os.path.isdir(app.config["UPLOAD_DIR"]), "UPLOAD_DIR must exist")
+
 def doFileUpload(file, fileType, fileTypeDesc):
        if not file or file is None or file.filename == "":
                flash("No selected file", "error")
@@ -73,7 +75,7 @@ def doFileUpload(file, fileType, fileTypeDesc):
        file.stream.seek(0)
 
        filename = randomString(10) + "." + ext
-       file.save(os.path.join("app/public/uploads", filename))
+       file.save(os.path.join(app.config["UPLOAD_DIR"], filename))
        return "/uploads/" + filename
 
 def make_flask_user_password(plaintext_str):
index 51e3f50584922c322f99852c8e1c3760d3768525..60f692822eda60e8a6e66c82ce065fa0ee717bfa 100644 (file)
@@ -25,6 +25,9 @@ MAIL_PORT=587
 MAIL_USE_TLS=True
 MAIL_UTILS_ERROR_SEND_TO=[""]
 
+UPLOAD_DIR="/var/cdb/uploads/"
+THUMBNAIL_DIR="/var/cdb/thumbnails/"
+
 LANGUAGES = {
     'en': 'English',
 }
index 4f8ccfe71061a26cc1a6820ea4c491ef3f49f710..40b345f5452eeaaf946f77c261385b7a75109b6b 100644 (file)
@@ -21,9 +21,7 @@ services:
     ports:
       - 5123:5123
     volumes:
-      - "./data/uploads:/home/cdb/app/public/uploads"
-      - "./app:/home/cdb/appsrc"
-      - "./migrations:/home/cdb/migrations"
+      - "./data/uploads:/var/cdb/uploads"
     depends_on:
       - db
       - redis
@@ -36,7 +34,7 @@ services:
     environment:
       - FLASK_CONFIG=../config.cfg
     volumes:
-      - "./data/uploads:/home/cdb/app/public/uploads"
+      - "./data/uploads:/var/cdb/uploads"
     depends_on:
       - redis