From 5c6a3b897e868efb8eb304ac429a7a6100c1743c Mon Sep 17 00:00:00 2001
From: Emre Gezer <21geem1bif@hft-stuttgart.de>
Date: Sat, 19 Apr 2025 11:15:56 +0200
Subject: [PATCH] Added Dockerfiles and compose so we can start the project
 with docker compose up --build modified urls.py sim->app

---
 backend/Dockerfile       | 29 +++++++++++++++++++++++++++++
 backend/app/views.py     |  4 ++--
 backend/core/urls.py     |  2 +-
 backend/requirements.txt |  0
 docker-compose.yml       | 18 ++++++++++++++++++
 frontend/Dockerfile      | 13 +++++++++++++
 6 files changed, 63 insertions(+), 3 deletions(-)
 create mode 100644 backend/Dockerfile
 create mode 100644 backend/requirements.txt
 create mode 100644 docker-compose.yml
 create mode 100644 frontend/Dockerfile

diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 0000000..6d05560
--- /dev/null
+++ b/backend/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 .
+
+# 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/app/views.py b/backend/app/views.py
index 4aeec7f..7bff2a9 100644
--- a/backend/app/views.py
+++ b/backend/app/views.py
@@ -32,7 +32,7 @@ def login_view(request):
     user = authenticate(request, username=email, password=password)
 
     if user:
-        login(request, user)
+        login(request, user) # also creates a session in the browser
         return JsonResponse({"success": True})
     return JsonResponse(
         {"success": False, "message": "Invalid credentials"}, status=401
@@ -40,7 +40,7 @@ def login_view(request):
 
 
 def logout_view(request):
-    logout(request)
+    logout(request) 
     return JsonResponse({"message": "Logged out"})
 
 
diff --git a/backend/core/urls.py b/backend/core/urls.py
index 8e18b6f..8d12f2b 100644
--- a/backend/core/urls.py
+++ b/backend/core/urls.py
@@ -20,5 +20,5 @@ from django.urls import path, include
 
 urlpatterns = [
     path("admin/", admin.site.urls),
-    path("", include("sim.urls")),
+    path("", include("app.urls")),
 ]
diff --git a/backend/requirements.txt b/backend/requirements.txt
new file mode 100644
index 0000000..e69de29
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..f7b96d0
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,18 @@
+version: '3.9'
+
+services:
+  backend:
+    build: ./backend
+    ports:
+      - "8000:8000"
+    volumes:
+      - ./backend:/app
+
+  frontend:
+    build: ./frontend
+    ports:
+      - "5173:5173"
+    volumes:
+      - ./frontend:/app
+    stdin_open: true
+    tty: true
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000..7e7ab91
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,13 @@
+# frontend/Dockerfile
+
+FROM node:20
+WORKDIR /app
+
+# Nur lokale Abhängigkeiten, kein globales Vite!
+COPY package*.json ./
+RUN npm install
+
+COPY . .
+
+EXPOSE 5173
+CMD ["npx", "vite", "--host"]
-- 
GitLab