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