From fdc14604815213dbcdc2a27024232f3251370cc2 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Fri, 1 Nov 2024 20:42:13 +0100 Subject: [PATCH 1/6] WIP: Add dev environment using docker --- core/Dockerfile.dev | 13 +++++++++++++ docker-compose.dev.yml | 31 +++++++++++++++++++++++++++++++ web/Dockerfile.dev | 6 ++++++ web/vue.config.js | 40 ++++++++++++++++++++-------------------- 4 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 core/Dockerfile.dev create mode 100644 docker-compose.dev.yml create mode 100644 web/Dockerfile.dev diff --git a/core/Dockerfile.dev b/core/Dockerfile.dev new file mode 100644 index 0000000..0364fb8 --- /dev/null +++ b/core/Dockerfile.dev @@ -0,0 +1,13 @@ +FROM python:3.11-bookworm +LABEL authors="lagertonne" + +ENV PYTHONUNBUFFERED 1 +RUN mkdir /code +WORKDIR /code +COPY requirements.dev.txt /code/ +COPY requirements.prod.txt /code/ +RUN apt update && apt install -y mariadb-client +RUN pip install -r requirements.dev.txt +RUN pip install -r requirements.prod.txt +RUN pip install mysqlclient +COPY . /code/ \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..23c2225 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,31 @@ +services: + core: + build: + context: ./core + dockerfile: Dockerfile.dev + command: python manage.py runserver 0.0.0.0:8000 + #environment: + # - DATABASE_URL + volumes: + - ./core:/code + ports: + - "8000:8000" + + frontend: + build: + context: ./web + dockerfile: Dockerfile.dev + command: npm run serve + volumes: + - ./web:/web:ro + - /web/node_modules + ports: + - "8080:8080" + + db: + image: mariadb + environment: + MARIADB_RANDOM_ROOT_PASSWORD: true + MARIADB_DATABASE: system3 + MARIADB_USER: system3 + MARIADB_PASSWORD: system3 \ No newline at end of file diff --git a/web/Dockerfile.dev b/web/Dockerfile.dev new file mode 100644 index 0000000..0a41d1a --- /dev/null +++ b/web/Dockerfile.dev @@ -0,0 +1,6 @@ +FROM docker.io/node:22 + +RUN mkdir /web +WORKDIR /web +COPY package.json /web/ +RUN npm install diff --git a/web/vue.config.js b/web/vue.config.js index 6a50fe3..007c1ff 100644 --- a/web/vue.config.js +++ b/web/vue.config.js @@ -7,25 +7,25 @@ module.exports = { "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Methods": "*" }, - proxy: { - '^/media/2': { - target: 'https://staging.c3lf.de/', - changeOrigin: true - }, - '^/api/2': { - target: 'https://staging.c3lf.de/', - changeOrigin: true, - }, - '^/api/1': { - target: 'https://staging.c3lf.de/', - changeOrigin: true, - }, - '^/ws/2': { - target: 'http://127.0.0.1:8082/', - //changeOrigin: true, - ws: true, - logLevel: 'debug', - }, - } + //proxy: { + // '^/media/2': { + // target: 'https://staging.c3lf.de/', + // changeOrigin: true + // }, + // '^/api/2': { + // target: 'https://staging.c3lf.de/', + // changeOrigin: true, + // }, + // '^/api/1': { + // target: 'https://staging.c3lf.de/', + // changeOrigin: true, + // }, + // '^/ws/2': { + // target: 'http://127.0.0.1:8082/', + // //changeOrigin: true, + // ws: true, + // logLevel: 'debug', + // }, + //} } } \ No newline at end of file From f4ccb02a487d51a87aeb2e2974504ebfdc840b40 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Wed, 6 Nov 2024 22:21:32 +0100 Subject: [PATCH 2/6] WIP: Add the django standard metrics --- core/core/metrics.py | 8 ++++++++ core/core/settings.py | 5 +++++ core/core/urls.py | 2 ++ core/requirements.prod.txt | 2 ++ 4 files changed, 17 insertions(+) create mode 100644 core/core/metrics.py diff --git a/core/core/metrics.py b/core/core/metrics.py new file mode 100644 index 0000000..47916be --- /dev/null +++ b/core/core/metrics.py @@ -0,0 +1,8 @@ +from prometheus_client import Counter, Gauge +from django_prometheus.middleware import ( + PrometheusAfterMiddleware, +) + +class AppMetricsAfterMiddleware(PrometheusAfterMiddleware): + def register_metric(self, metric_cls, name, documentation, labelnames=(), **kwargs): + return super().register_metric(metric_cls, name, documentation, labelnames=labelnames, **kwargs) \ No newline at end of file diff --git a/core/core/settings.py b/core/core/settings.py index db23180..124fcad 100644 --- a/core/core/settings.py +++ b/core/core/settings.py @@ -50,6 +50,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django_extensions', + 'django_prometheus', 'rest_framework', 'knox', 'drf_yasg', @@ -85,6 +86,7 @@ SWAGGER_SETTINGS = { } MIDDLEWARE = [ + 'django_prometheus.middleware.PrometheusBeforeMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', @@ -92,6 +94,7 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django_prometheus.middleware.PrometheusAfterMiddleware', ] ROOT_URLCONF = 'core.urls' @@ -210,4 +213,6 @@ CHANNEL_LAYERS = { } +PROMETHEUS_METRIC_NAMESPACE = 'c3lf' + TEST_RUNNER = 'core.test_runner.FastTestRunner' diff --git a/core/core/urls.py b/core/core/urls.py index b0161bb..e73f478 100644 --- a/core/core/urls.py +++ b/core/core/urls.py @@ -18,6 +18,7 @@ from django.contrib import admin from django.urls import path, include from .version import get_info +from .metrics import CustomMetrics urlpatterns = [ path('djangoadmin/', admin.site.urls), @@ -32,4 +33,5 @@ urlpatterns = [ path('api/2/', include('notify_sessions.api_v2')), path('api/2/', include('authentication.api_v2')), path('api/', get_info), + path('', include('django_prometheus.urls')), ] diff --git a/core/requirements.prod.txt b/core/requirements.prod.txt index 14bdc0f..ee69fe7 100644 --- a/core/requirements.prod.txt +++ b/core/requirements.prod.txt @@ -41,3 +41,5 @@ urllib3==2.1.0 uvicorn==0.24.0.post1 watchfiles==0.21.0 websockets==12.0 +django-prometheus==2.3.1 +prometheus_client==0.21.0 From a60a49f6cc66706f8d7bbe60bedbca6b220e1685 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Wed, 6 Nov 2024 22:26:48 +0100 Subject: [PATCH 3/6] WIP: testing actions --- .forgejo/workflows/deploy.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .forgejo/workflows/deploy.yml diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml new file mode 100644 index 0000000..cf05838 --- /dev/null +++ b/.forgejo/workflows/deploy.yml @@ -0,0 +1,7 @@ +on: [push] +jobs: + test: + runs-on: docker + steps: + - uses: actions/checkout@v4 + From 35fa903135ed3dba6fa4cbea0c3ecf498ea6b0c0 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Wed, 6 Nov 2024 22:31:10 +0100 Subject: [PATCH 4/6] Add python3 to actions --- .forgejo/workflows/deploy.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index cf05838..9279a0f 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -4,4 +4,7 @@ jobs: runs-on: docker steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' From 9186ac89bde0c5d4fd8b750f01bc604b80f99f75 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Wed, 6 Nov 2024 22:26:48 +0100 Subject: [PATCH 5/6] WIP: testing actions --- .forgejo/workflows/deploy.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .forgejo/workflows/deploy.yml diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml new file mode 100644 index 0000000..cf05838 --- /dev/null +++ b/.forgejo/workflows/deploy.yml @@ -0,0 +1,7 @@ +on: [push] +jobs: + test: + runs-on: docker + steps: + - uses: actions/checkout@v4 + From 3f43b639818324fe395c0959815114bde14548d2 Mon Sep 17 00:00:00 2001 From: lagertonne Date: Wed, 6 Nov 2024 22:31:10 +0100 Subject: [PATCH 6/6] Add python3 to actions --- .forgejo/workflows/deploy.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index cf05838..9279a0f 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -4,4 +4,7 @@ jobs: runs-on: docker steps: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11'