From 9685721c362de649e9179ce7a1b6d34a6a905d2e Mon Sep 17 00:00:00 2001
From: Artem Baranovskyi <artem.baranovsky1980@gmail.com>
Date: Sun, 8 Sep 2024 18:59:08 +0300
Subject: [PATCH] Moodle and Python services are separated to isolated
 services.

---
 asystgrade/lib.php                            |   2 +-
 asystgrade/tests/fakedata/questions.php       |   0
 flask/Dockerfile                              |  32 ++++++++++++++++++
 api.py => flask/api.py                        |   0
 {asyst => flask/asyst}/DE_Demo_Daten.xlsx     | Bin
 {asyst => flask/asyst}/README.md              |   0
 {asyst => flask/asyst}/README_DE.md           |   0
 {asyst => flask/asyst}/README_EN.md           |   0
 {asyst => flask/asyst}/Source/LICENSE         |   0
 .../Skript/german/models/clf_BERT.pickle      | Bin
 .../Source/Skript/german/run_LR_SBERT.py      |   4 +--
 requirements.txt => flask/requirements.txt    |   0
 12 files changed, 35 insertions(+), 3 deletions(-)
 mode change 100644 => 100755 asystgrade/tests/fakedata/questions.php
 create mode 100644 flask/Dockerfile
 rename api.py => flask/api.py (100%)
 rename {asyst => flask/asyst}/DE_Demo_Daten.xlsx (100%)
 rename {asyst => flask/asyst}/README.md (100%)
 rename {asyst => flask/asyst}/README_DE.md (100%)
 rename {asyst => flask/asyst}/README_EN.md (100%)
 rename {asyst => flask/asyst}/Source/LICENSE (100%)
 rename {asyst => flask/asyst}/Source/Skript/german/models/clf_BERT.pickle (100%)
 rename {asyst => flask/asyst}/Source/Skript/german/run_LR_SBERT.py (93%)
 rename requirements.txt => flask/requirements.txt (100%)

diff --git a/asystgrade/lib.php b/asystgrade/lib.php
index 94cfceb..511d2f4 100755
--- a/asystgrade/lib.php
+++ b/asystgrade/lib.php
@@ -66,7 +66,7 @@ function local_asystgrade_before_footer()
 
         $apiendpoint = get_config('local_asystgrade', 'apiendpoint');
         if (!$apiendpoint) {
-            $apiendpoint = 'http://127.0.0.1:5000/api/autograde'; // Default setting
+            $apiendpoint = 'http://flask:5000/api/autograde'; // Default setting, flask is the name of flask container
         }
 
         error_log('APIendpoint: ' . $apiendpoint);
diff --git a/asystgrade/tests/fakedata/questions.php b/asystgrade/tests/fakedata/questions.php
old mode 100644
new mode 100755
diff --git a/flask/Dockerfile b/flask/Dockerfile
new file mode 100644
index 0000000..5915a1e
--- /dev/null
+++ b/flask/Dockerfile
@@ -0,0 +1,32 @@
+FROM python:3.11-slim
+
+# Installing system dependencies
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    build-essential \
+    python3-venv \
+    && rm -rf /var/lib/apt/lists/*
+
+# Creating and activating the virtual environment \
+RUN python3 -m venv /opt/myenv
+ENV PATH="/opt/myenv/bin:$PATH"
+
+WORKDIR /app
+RUN ls -la /app
+COPY . /app
+
+# Installing dependencies
+RUN /opt/myenv/bin/pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt
+#RUN /opt/myenv/bin/python3 -m pip install -r /app/requirements.txt
+RUN /opt/myenv/bin/python3 -m pip install --upgrade setuptools wheel
+
+COPY ./asyst /app/asyst
+
+# Set permissions
+RUN chown -R www-data:www-data /app/asyst
+RUN chmod -R 755 /app/asyst
+
+# Open port for Flask API
+EXPOSE 5000
+
+# Launch application
+CMD ["python", "/app/api.py"]
\ No newline at end of file
diff --git a/api.py b/flask/api.py
similarity index 100%
rename from api.py
rename to flask/api.py
diff --git a/asyst/DE_Demo_Daten.xlsx b/flask/asyst/DE_Demo_Daten.xlsx
similarity index 100%
rename from asyst/DE_Demo_Daten.xlsx
rename to flask/asyst/DE_Demo_Daten.xlsx
diff --git a/asyst/README.md b/flask/asyst/README.md
similarity index 100%
rename from asyst/README.md
rename to flask/asyst/README.md
diff --git a/asyst/README_DE.md b/flask/asyst/README_DE.md
similarity index 100%
rename from asyst/README_DE.md
rename to flask/asyst/README_DE.md
diff --git a/asyst/README_EN.md b/flask/asyst/README_EN.md
similarity index 100%
rename from asyst/README_EN.md
rename to flask/asyst/README_EN.md
diff --git a/asyst/Source/LICENSE b/flask/asyst/Source/LICENSE
similarity index 100%
rename from asyst/Source/LICENSE
rename to flask/asyst/Source/LICENSE
diff --git a/asyst/Source/Skript/german/models/clf_BERT.pickle b/flask/asyst/Source/Skript/german/models/clf_BERT.pickle
similarity index 100%
rename from asyst/Source/Skript/german/models/clf_BERT.pickle
rename to flask/asyst/Source/Skript/german/models/clf_BERT.pickle
diff --git a/asyst/Source/Skript/german/run_LR_SBERT.py b/flask/asyst/Source/Skript/german/run_LR_SBERT.py
similarity index 93%
rename from asyst/Source/Skript/german/run_LR_SBERT.py
rename to flask/asyst/Source/Skript/german/run_LR_SBERT.py
index c66c9e0..cd748f3 100755
--- a/asyst/Source/Skript/german/run_LR_SBERT.py
+++ b/flask/asyst/Source/Skript/german/run_LR_SBERT.py
@@ -36,7 +36,7 @@ def process_data(data):
 
     parser.add_argument(
         "--model_dir",
-        default="/var/www/html/moodle/asyst/Source/Skript/german/models",
+        default="/app/asyst/Source/Skript/german/models",
         type=str,
         required=False,
         help="The directory where the ML models are stored.",
@@ -65,7 +65,7 @@ def process_data(data):
     X_test = computed_simis_test
 
     # UP: read pre-trained LR model
-    clf_log = pickle.load(open("/var/www/html/moodle/asyst/Source/Skript/german/models/clf_BERT.pickle", "rb"))
+    clf_log = pickle.load(open("/app/asyst/Source/Skript/german/models/clf_BERT.pickle", "rb"))
     predictions = clf_log.predict(X_test)
 
 
diff --git a/requirements.txt b/flask/requirements.txt
similarity index 100%
rename from requirements.txt
rename to flask/requirements.txt
-- 
GitLab