From f273cddc3afec9decede22eca27073f51c44e440 Mon Sep 17 00:00:00 2001
From: Sergiu Weisz <sergiu121@gmail.com>
Date: Mon, 10 Jul 2023 13:34:09 +0200
Subject: [PATCH] Add Moodle based infrastructure template

---
 moodle/.env               |  11 ++++
 moodle/docker-compose.yml | 118 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 129 insertions(+)
 create mode 100644 moodle/.env
 create mode 100644 moodle/docker-compose.yml

diff --git a/moodle/.env b/moodle/.env
new file mode 100644
index 0000000..42cb398
--- /dev/null
+++ b/moodle/.env
@@ -0,0 +1,11 @@
+##################
+# Backend Config #
+##################
+
+# Django secret key
+SECRET_KEY_BACKEND=another-very-secret-key
+GITLAB_URL=https://gitlab.com
+MINIO_ACCESS_KEY=1234
+MINIO_SECRET_KEY=123456789
+DATABASE_USER_BACKEND=anotherDatabaseUser
+DATABASE_PASSWORD_BACKEND=password
diff --git a/moodle/docker-compose.yml b/moodle/docker-compose.yml
new file mode 100644
index 0000000..b12ead7
--- /dev/null
+++ b/moodle/docker-compose.yml
@@ -0,0 +1,118 @@
+# Copyright VMware, Inc.
+# SPDX-License-Identifier: APACHE-2.0
+
+version: "3"
+services:
+
+  backend:
+    image: jokeswar/vmchecker_api:master
+    restart: always
+    depends_on:
+      - database-backend
+      - storage-backend
+    environment:
+      GITLAB_URL: "${GITLAB_URL}"
+      SUBMISSION_STORAGE_TYPE: "MINIO"
+      MINIO_ADDRESS: "storage-backend:9000"
+      MINIO_ACCESS_KEY: "${MINIO_ACCESS_KEY}"
+      MINIO_SECRET_KEY: "${MINIO_SECRET_KEY}"
+      DATABASE_NAME: "backend"
+      DATABASE_USER: "root"
+      DATABASE_PASSWORD: "${DATABASE_PASSWORD_BACKEND}"
+      DATABASE_HOST: "database-backend"
+      DATABASE_PORT: "5432"
+      SECRET_KEY: "${SECRET_KEY_BACKEND}"
+      UWSGI_PROCESS_COUNT: "2"
+    logging:
+      driver: "json-file"
+      options:
+        max-size: "5m"
+    networks:
+      - database-backend-network
+      - storage-backend-network
+      - backend-network
+
+  database-backend:
+    image: postgres:12.0-alpine
+    restart: always
+    environment:
+      POSTGRES_DB: "backend"
+      POSTGRES_USER: "root"
+      POSTGRES_PASSWORD: "${DATABASE_PASSWORD_BACKEND}"
+    volumes:
+      - db-data:/var/lib/postgresql/data
+    networks:
+      - database-backend-network
+
+  storage-backend:
+    image: minio/minio:RELEASE.2022-10-24T18-35-07Z
+    restart: always
+    command: [ "server", "/data" ]
+    environment:
+      MINIO_ACCESS_KEY: "${MINIO_ACCESS_KEY}"
+      MINIO_SECRET_KEY: "${MINIO_SECRET_KEY}"
+    volumes:
+      - storage-data:/data
+    networks:
+      - storage-backend-network
+
+  mariadb:
+    image: docker.io/bitnami/mariadb:10.6
+    restart: always
+    environment:
+      # ALLOW_EMPTY_PASSWORD is recommended only for development.
+      - ALLOW_EMPTY_PASSWORD=yes
+      - MARIADB_USER=bn_moodle
+      - MARIADB_DATABASE=bitnami_moodle
+      - MARIADB_CHARACTER_SET=utf8mb4
+      - MARIADB_COLLATE=utf8mb4_unicode_ci
+    networks:
+      - backend-network
+    volumes:
+      - 'mariadb_data:/bitnami/mariadb'
+
+  runner:
+    image: gitlab/gitlab-runner:latest
+    restart: always
+    privileged: true
+    networks:
+      - runner-network
+    volumes:
+      - 'runner_volume:/etc/gitlab-runner'
+      - '/var/run/docker.sock:/var/run/docker.sock'
+
+  moodle:
+    image: docker.io/bitnami/moodle:4.2
+    restart: always
+    ports:
+      - '80:8080'
+      - '443:8443'
+    environment:
+      - MOODLE_DATABASE_HOST=mariadb
+      - MOODLE_DATABASE_PORT_NUMBER=3306
+      - MOODLE_DATABASE_USER=bn_moodle
+      - MOODLE_DATABASE_NAME=bitnami_moodle
+      # ALLOW_EMPTY_PASSWORD is recommended only for development.
+      - ALLOW_EMPTY_PASSWORD=yes
+    networks:
+      - backend-network
+    volumes:
+      - 'moodle_data:/bitnami/moodle'
+      - 'moodledata_data:/bitnami/moodledata'
+    depends_on:
+      - mariadb
+
+volumes:
+  storage-data:
+  db-data:
+  openldap_data:
+  mariadb_data:
+  moodle_data:
+  moodledata_data:
+  runner_volume:
+
+networks:
+  database-backend-network:
+  storage-backend-network:
+  backend-network:
+  runner-network:
-- 
GitLab