Compare commits

...

2 commits

Author SHA1 Message Date
e156df726a WIP: Add the django standard metrics 2024-11-06 22:21:32 +01:00
d2a38b8327 WIP: Add dev environment using docker 2024-11-01 20:42:13 +01:00
8 changed files with 87 additions and 20 deletions

13
core/Dockerfile.dev Normal file
View file

@ -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/

8
core/core/metrics.py Normal file
View file

@ -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)

View file

@ -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'

View file

@ -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')),
]

View file

@ -38,3 +38,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

31
docker-compose.dev.yml Normal file
View file

@ -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

6
web/Dockerfile.dev Normal file
View file

@ -0,0 +1,6 @@
FROM docker.io/node:22
RUN mkdir /web
WORKDIR /web
COPY package.json /web/
RUN npm install

View file

@ -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/',
//proxy: {
// '^/media/2': {
// target: 'https://staging.c3lf.de/',
// changeOrigin: true
// },
// '^/api/2': {
// target: 'https://staging.c3lf.de/',
// changeOrigin: true,
ws: true,
logLevel: 'debug',
},
}
// },
// '^/api/1': {
// target: 'https://staging.c3lf.de/',
// changeOrigin: true,
// },
// '^/ws/2': {
// target: 'http://127.0.0.1:8082/',
// //changeOrigin: true,
// ws: true,
// logLevel: 'debug',
// },
//}
}
}