Compare commits

...

4 commits

Author SHA1 Message Date
35fa903135 Add python3 to actions
Some checks failed
/ test (push) Failing after 43s
2024-11-06 22:31:10 +01:00
a60a49f6cc WIP: testing actions
All checks were successful
/ test (push) Successful in 25s
2024-11-06 22:29:15 +01:00
f4ccb02a48 WIP: Add the django standard metrics 2024-11-06 22:23:12 +01:00
fdc1460481 WIP: Add dev environment using docker 2024-11-06 22:23:12 +01:00
9 changed files with 97 additions and 20 deletions

View file

@ -0,0 +1,10 @@
on: [push]
jobs:
test:
runs-on: docker
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'

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.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django_extensions', 'django_extensions',
'django_prometheus',
'rest_framework', 'rest_framework',
'knox', 'knox',
'drf_yasg', 'drf_yasg',
@ -85,6 +86,7 @@ SWAGGER_SETTINGS = {
} }
MIDDLEWARE = [ MIDDLEWARE = [
'django_prometheus.middleware.PrometheusBeforeMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
@ -92,6 +94,7 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_prometheus.middleware.PrometheusAfterMiddleware',
] ]
ROOT_URLCONF = 'core.urls' ROOT_URLCONF = 'core.urls'
@ -210,4 +213,6 @@ CHANNEL_LAYERS = {
} }
PROMETHEUS_METRIC_NAMESPACE = 'c3lf'
TEST_RUNNER = 'core.test_runner.FastTestRunner' TEST_RUNNER = 'core.test_runner.FastTestRunner'

View file

@ -18,6 +18,7 @@ from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from .version import get_info from .version import get_info
from .metrics import CustomMetrics
urlpatterns = [ urlpatterns = [
path('djangoadmin/', admin.site.urls), path('djangoadmin/', admin.site.urls),
@ -32,4 +33,5 @@ urlpatterns = [
path('api/2/', include('notify_sessions.api_v2')), path('api/2/', include('notify_sessions.api_v2')),
path('api/2/', include('authentication.api_v2')), path('api/2/', include('authentication.api_v2')),
path('api/', get_info), path('api/', get_info),
path('', include('django_prometheus.urls')),
] ]

View file

@ -41,3 +41,5 @@ urllib3==2.1.0
uvicorn==0.24.0.post1 uvicorn==0.24.0.post1
watchfiles==0.21.0 watchfiles==0.21.0
websockets==12.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-Headers": "*",
"Access-Control-Allow-Methods": "*" "Access-Control-Allow-Methods": "*"
}, },
proxy: { //proxy: {
'^/media/2': { // '^/media/2': {
target: 'https://staging.c3lf.de/', // target: 'https://staging.c3lf.de/',
changeOrigin: true // changeOrigin: true
}, // },
'^/api/2': { // '^/api/2': {
target: 'https://staging.c3lf.de/', // target: 'https://staging.c3lf.de/',
changeOrigin: true, // changeOrigin: true,
}, // },
'^/api/1': { // '^/api/1': {
target: 'https://staging.c3lf.de/', // target: 'https://staging.c3lf.de/',
changeOrigin: true, // changeOrigin: true,
}, // },
'^/ws/2': { // '^/ws/2': {
target: 'http://127.0.0.1:8082/', // target: 'http://127.0.0.1:8082/',
//changeOrigin: true, // //changeOrigin: true,
ws: true, // ws: true,
logLevel: 'debug', // logLevel: 'debug',
}, // },
} //}
} }
} }