From 4386b93b3703aceb9d7ea2ac2a156bbcd07c1428 Mon Sep 17 00:00:00 2001 From: Emre Gezer <21geem1bif@hft-stuttgart.de> Date: Thu, 8 May 2025 10:08:23 +0200 Subject: [PATCH] Added influx and mqtt config files and modified compose.yaml but still need to fix and modify dockerfile in stream_processing --- backend/Dockerfile | 2 +- backend/requirements.txt | 3 +- backend/stream_processing/Dockerfile | 29 +++++++++++++++++ backend/stream_processing/jsonhandler.py | 2 -- docker-compose.yaml | 16 +++++----- frontend/Dockerfile | 2 +- services/influxdb/compose.yaml | 35 +++++++++++++++++++++ services/influxdb/influxdb2-admin-password | 1 + services/influxdb/influxdb2-admin-token | 1 + services/influxdb/influxdb2-admin-username | 1 + services/mqtt/compose.yaml | 25 +++++++++++++++ services/mqtt/config/mosquitto.conf | 11 +++++++ services/mqtt/data/mosquitto.db | Bin 0 -> 47 bytes 13 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 backend/stream_processing/Dockerfile create mode 100644 services/influxdb/compose.yaml create mode 100644 services/influxdb/influxdb2-admin-password create mode 100644 services/influxdb/influxdb2-admin-token create mode 100644 services/influxdb/influxdb2-admin-username create mode 100644 services/mqtt/compose.yaml create mode 100644 services/mqtt/config/mosquitto.conf create mode 100644 services/mqtt/data/mosquitto.db diff --git a/backend/Dockerfile b/backend/Dockerfile index 6d05560..100e143 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -10,7 +10,7 @@ COPY uv.lock . # Kopiere auch requirements.txt, falls vorhanden COPY requirements.txt . - +# Nutze uv # Installiere uv und die Abhängigkeiten RUN pip install --upgrade pip && \ pip install uv && \ diff --git a/backend/requirements.txt b/backend/requirements.txt index 5d7849d..338f007 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,3 +1,4 @@ django>=5.2 django-cors-headers>=4.7.0 -influxdb-client>=1.40 \ No newline at end of file +influxdb-client>=1.40 +python-dotenv>=1.1 \ No newline at end of file diff --git a/backend/stream_processing/Dockerfile b/backend/stream_processing/Dockerfile new file mode 100644 index 0000000..100e143 --- /dev/null +++ b/backend/stream_processing/Dockerfile @@ -0,0 +1,29 @@ +# Verwende das neueste Python-Image +FROM python:latest + +# Setze das Arbeitsverzeichnis im Container +WORKDIR /app + +# Kopiere die pyproject.toml und uv.lock-Dateien +COPY pyproject.toml . +COPY uv.lock . + +# Kopiere auch requirements.txt, falls vorhanden +COPY requirements.txt . +# Nutze uv +# Installiere uv und die Abhängigkeiten +RUN pip install --upgrade pip && \ + pip install uv && \ + pip install --no-cache-dir -r requirements.txt + +# Kopiere den Rest des Projekts in den Container +COPY . . + +# Setze Umgebungsvariablen, falls nötig +ENV PYTHONUNBUFFERED 1 + +# Exponiere den Port 8000 für den Server +EXPOSE 8000 + +# Der Startbefehl: Starte den Server mit uv +CMD ["uv", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"] diff --git a/backend/stream_processing/jsonhandler.py b/backend/stream_processing/jsonhandler.py index 8be10f9..d90ba36 100644 --- a/backend/stream_processing/jsonhandler.py +++ b/backend/stream_processing/jsonhandler.py @@ -1,7 +1,6 @@ import json import os - def load_json(file_name: str) -> dict: """ ladet eine JSON Datei, wenn diese existiert, @@ -14,7 +13,6 @@ def load_json(file_name: str) -> dict: mac_room_mapping = json.load(f) return mac_room_mapping - def write_json(mac_room_mapping: dict, file_name: str): """ Nimmt ein dictionary und schreibt dessen diff --git a/docker-compose.yaml b/docker-compose.yaml index 39150fa..1294bb0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,23 +1,25 @@ services: - mqtt-backend: - image: mqtt-influx-backend - container_name: mqtt-backend - build: ./mqtt - command: uv run -m mqtt_influx_backend.main + stream-processing: + image: stream-processing + container_name: stream-processing + build: ./backend/stream_processing + command: uv run -m backend.stream_processing.main env_file: - - ../mqtt_to_influxdb/.env + - ../backend/.env restart: unless-stopped #depends_on: # - influxdb # - mosquitto backend: + image: django-backend + container_name: django-backend build: ./backend ports: - "8000:8000" - volumes: + volumes: # was ist volumes - ./backend:/app frontend: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index f687c9b..dba6e6f 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,6 +1,6 @@ # frontend/Dockerfile -FROM node:20 +FROM node:latest WORKDIR /app # Nur lokale Abhängigkeiten, kein globales Vite! diff --git a/services/influxdb/compose.yaml b/services/influxdb/compose.yaml new file mode 100644 index 0000000..cf6baee --- /dev/null +++ b/services/influxdb/compose.yaml @@ -0,0 +1,35 @@ +# compose.yaml +services: + influxdb2: + image: influxdb:2 + ports: + - 8086:8086 + environment: + DOCKER_INFLUXDB_INIT_MODE: setup + DOCKER_INFLUXDB_INIT_USERNAME_FILE: /run/secrets/influxdb2-admin-username + DOCKER_INFLUXDB_INIT_PASSWORD_FILE: /run/secrets/influxdb2-admin-password + DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE: /run/secrets/influxdb2-admin-token + DOCKER_INFLUXDB_INIT_ORG: docs + DOCKER_INFLUXDB_INIT_BUCKET: home + secrets: + - influxdb2-admin-username + - influxdb2-admin-password + - influxdb2-admin-token + volumes: + - type: volume + source: influxdb2-data + target: /var/lib/influxdb2 + - type: volume + source: influxdb2-config + target: /etc/influxdb2 +secrets: + influxdb2-admin-username: + file: /opt/stacks/influxdb/influxdb2-admin-username + influxdb2-admin-password: + file: /opt/stacks/influxdb/influxdb2-admin-password + influxdb2-admin-token: + file: /opt/stacks/influxdb/influxdb2-admin-token +volumes: + influxdb2-data: + influxdb2-config: + diff --git a/services/influxdb/influxdb2-admin-password b/services/influxdb/influxdb2-admin-password new file mode 100644 index 0000000..f3097ab --- /dev/null +++ b/services/influxdb/influxdb2-admin-password @@ -0,0 +1 @@ +password diff --git a/services/influxdb/influxdb2-admin-token b/services/influxdb/influxdb2-admin-token new file mode 100644 index 0000000..dd9fb54 --- /dev/null +++ b/services/influxdb/influxdb2-admin-token @@ -0,0 +1 @@ +MyInitialAdminToken0== diff --git a/services/influxdb/influxdb2-admin-username b/services/influxdb/influxdb2-admin-username new file mode 100644 index 0000000..7fbe952 --- /dev/null +++ b/services/influxdb/influxdb2-admin-username @@ -0,0 +1 @@ +admin diff --git a/services/mqtt/compose.yaml b/services/mqtt/compose.yaml new file mode 100644 index 0000000..421cc24 --- /dev/null +++ b/services/mqtt/compose.yaml @@ -0,0 +1,25 @@ + +services: + mosquitto: + image: eclipse-mosquitto + container_name: mosquitto-broker + volumes: + - ./config:/mosquitto/config + - ./data:/mosquitto/data + - ./log:/mosquitto/log + - ./mosquitto:/mosquitto + ports: + - 8883:8883 + - 1883:1883 + - 9001:9001 # optional für Websockets + stdin_open: true + tty: true + + # backend: + # build: ./backend + # container_name: backend-app + # ports: + # - "3000:3000" + # depends_on: + # - mosquitto + # restart: unless-stopped diff --git a/services/mqtt/config/mosquitto.conf b/services/mqtt/config/mosquitto.conf new file mode 100644 index 0000000..00df46d --- /dev/null +++ b/services/mqtt/config/mosquitto.conf @@ -0,0 +1,11 @@ +listener 1883 +listener 8883 + +listener 9001 +protocol websockets + +persistence true +persistence_file mosquitto.db +persistence_location /mosquitto/data/ + +allow_anonymous true diff --git a/services/mqtt/data/mosquitto.db b/services/mqtt/data/mosquitto.db new file mode 100644 index 0000000000000000000000000000000000000000..41467253721ad106db189693a6f4d2a96e3c238d GIT binary patch literal 47 mcmZSB%8;91Tv(b}Qj)KblEeT3Y(R<;hy_xVnIIw@5DEb2k_I^d literal 0 HcmV?d00001 -- GitLab