From c5825234f8f3bdf2f712c32c065f663bc3495f45 Mon Sep 17 00:00:00 2001 From: Gemini Agent Date: Fri, 5 Dec 2025 20:07:07 +0000 Subject: [PATCH] Refactor: Moved Dockerfile to root, updated structure and documentation for Netbox integration --- frontend/Dockerfile => Dockerfile | 4 +- README.md | 66 +++++++++++++++++++++---------- docker-compose.yml | 2 +- 3 files changed, 48 insertions(+), 24 deletions(-) rename frontend/Dockerfile => Dockerfile (95%) diff --git a/frontend/Dockerfile b/Dockerfile similarity index 95% rename from frontend/Dockerfile rename to Dockerfile index 1e98796..d896ede 100644 --- a/frontend/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache libc6-compat WORKDIR /app # Install dependencies based on the preferred package manager -COPY package.json package-lock.json* ./ +COPY frontend/package.json frontend/package-lock.json* ./ RUN npm ci @@ -15,7 +15,7 @@ RUN npm ci FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules -COPY . . +COPY frontend/ . # Next.js collects completely anonymous telemetry data about general usage. # Learn more here: https://nextjs.org/telemetry diff --git a/README.md b/README.md index 9ca1a01..646bb12 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ Ein modernes Dashboard zur Visualisierung von Docker-Containern und Inventar-Dat ## 🚀 Features -- **Inventar-Übersicht**: Darstellung von Container-Informationen. -- **Netbox Integration**: Nahtlose Anbindung an die Netbox API. +- **Inventar-Übersicht**: Automatische Erkennung und Darstellung von Containern basierend auf Netbox-Daten. +- **Netbox Integration**: Nahtlose Anbindung an die Netbox API zur Zentralisierung der Dokumentation. - **Modernes UI**: Responsives Design dank Tailwind CSS v4. -- **Dockerized**: Einfaches Deployment via Docker. +- **Dockerized**: Saubere Trennung von Infrastruktur und Code. ## 🛠️ Technologien @@ -17,15 +17,44 @@ Ein modernes Dashboard zur Visualisierung von Docker-Containern und Inventar-Dat --- +## 🔌 Netbox Integration + +Das Dashboard dient als Frontend für deine Dokumentation in Netbox. Es "scannt" Netbox nach virtuellen Maschinen, die als Docker-Container gekennzeichnet sind. + +### Voraussetzungen in Netbox + +Damit Container im Dashboard erscheinen, müssen sie in Netbox korrekt angelegt sein: + +1. **Rolle (Role):** + * Erstelle eine Rolle für Virtual Machines mit dem Namen `Docker Container` und dem Slug `docker-container`. + * Jede VM, die im Dashboard erscheinen soll, muss diese Rolle haben. + +2. **Custom Fields:** + * Das Dashboard liest spezifische Custom Fields aus, um Details anzuzeigen. Lege diese in Netbox an (für Objekte vom Typ `Virtualization > Virtual Machine`): + * **Name:** `docker_run_command` | **Type:** Text (oder Long Text) + * *Inhalt:* Der komplette `docker run` Befehl. + * **Name:** `docker_volumes` | **Type:** Text (oder Long Text) + * *Inhalt:* Volume-Mappings (z.B. `-v /host/path:/container/path`), am besten eins pro Zeile. + +### Funktionsweise + +1. Das Dashboard fragt die Netbox API unter `/api/virtualization/virtual-machines/` ab. +2. Es filtert automatisch nach `?role=docker-container`. +3. Die Ergebnisse werden nach dem zugewiesenen **Device (Host)** gruppiert. +4. IP-Adressen, Status und die oben genannten Custom Fields werden visualisiert. + +--- + ## 📦 Deployment & Betrieb +Die Infrastruktur-Konfiguration (`Dockerfile`, `docker-compose.yml`) liegt im Hauptverzeichnis, der Anwendungscode im Unterordner `frontend/`. + ### 1. Docker Build & Run (Manuell) -Wenn du Docker Compose nicht nutzen möchtest, kannst du den Container auch manuell bauen und starten. - **Image bauen:** +(Aus dem Hauptverzeichnis) ```bash -docker build -t docker-dashboard-frontend ./frontend +docker build -t docker-dashboard-frontend . ``` **Container starten:** @@ -47,7 +76,7 @@ Das Dashboard ist anschließend unter `http://localhost:3000` erreichbar. ### 2. Updates einspielen (Workflow) -Wenn sich am Code im Git etwas geändert hat, gehe wie folgt vor, um die Anwendung zu aktualisieren: +Wenn sich am Code im Git etwas geändert hat: **1. Code aktualisieren:** ```bash @@ -59,16 +88,12 @@ git pull origin main docker-compose up -d --build ``` -**ODER Manuell (ohne Compose):** +**ODER Manuell:** ```bash -# Alten Container stoppen & löschen docker stop docker-dashboard docker rm docker-dashboard - -# Image neu bauen -docker build -t docker-dashboard-frontend ./frontend - -# Neu starten (siehe Befehl oben unter "Container starten") +docker build -t docker-dashboard-frontend . +# (Dann docker run Befehl von oben) ``` --- @@ -77,7 +102,7 @@ docker build -t docker-dashboard-frontend ./frontend Dieses Projekt wird unter `https://git.klenzel.net/Klenzel/docker_dashboard` verwaltet. -**Initiales Setup (falls noch nicht geschehen):** +**Initiales Setup:** ```bash git init git remote add origin https://git.klenzel.net/Klenzel/docker_dashboard @@ -97,10 +122,9 @@ git push origin main ## 📂 Projektstruktur -- `docker-compose.yml`: Definition der Services. +- `Dockerfile`: Bauanleitung für das Image (im Root). +- `docker-compose.yml`: Orchestrierung (im Root). - `frontend/`: Quellcode der Next.js Anwendung. - - `src/app/`: Next.js App Router Pages. - - `src/lib/`: Hilfsfunktionen und API-Clients. - - `src/components/`: UI-Komponenten. - -``` \ No newline at end of file + - `src/app/`: Pages & Routing. + - `src/lib/`: API-Logik (Netbox Fetching). + - `src/components/`: UI-Bausteine. diff --git a/docker-compose.yml b/docker-compose.yml index c701d3e..c6957f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ services: netbox-docker-ui: build: - context: ./frontend + context: . dockerfile: Dockerfile container_name: netbox-docker-ui restart: unless-stopped