Refactor: Moved Dockerfile to root, updated structure and documentation for Netbox integration

This commit is contained in:
Gemini Agent
2025-12-05 20:07:07 +00:00
parent 6ec63ec7bf
commit c5825234f8
3 changed files with 48 additions and 24 deletions

View File

@@ -7,7 +7,7 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app WORKDIR /app
# Install dependencies based on the preferred package manager # 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 RUN npm ci
@@ -15,7 +15,7 @@ RUN npm ci
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY frontend/ .
# Next.js collects completely anonymous telemetry data about general usage. # Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry # Learn more here: https://nextjs.org/telemetry

View File

@@ -4,10 +4,10 @@ Ein modernes Dashboard zur Visualisierung von Docker-Containern und Inventar-Dat
## 🚀 Features ## 🚀 Features
- **Inventar-Übersicht**: Darstellung von Container-Informationen. - **Inventar-Übersicht**: Automatische Erkennung und Darstellung von Containern basierend auf Netbox-Daten.
- **Netbox Integration**: Nahtlose Anbindung an die Netbox API. - **Netbox Integration**: Nahtlose Anbindung an die Netbox API zur Zentralisierung der Dokumentation.
- **Modernes UI**: Responsives Design dank Tailwind CSS v4. - **Modernes UI**: Responsives Design dank Tailwind CSS v4.
- **Dockerized**: Einfaches Deployment via Docker. - **Dockerized**: Saubere Trennung von Infrastruktur und Code.
## 🛠️ Technologien ## 🛠️ 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 ## 📦 Deployment & Betrieb
Die Infrastruktur-Konfiguration (`Dockerfile`, `docker-compose.yml`) liegt im Hauptverzeichnis, der Anwendungscode im Unterordner `frontend/`.
### 1. Docker Build & Run (Manuell) ### 1. Docker Build & Run (Manuell)
Wenn du Docker Compose nicht nutzen möchtest, kannst du den Container auch manuell bauen und starten.
**Image bauen:** **Image bauen:**
(Aus dem Hauptverzeichnis)
```bash ```bash
docker build -t docker-dashboard-frontend ./frontend docker build -t docker-dashboard-frontend .
``` ```
**Container starten:** **Container starten:**
@@ -47,7 +76,7 @@ Das Dashboard ist anschließend unter `http://localhost:3000` erreichbar.
### 2. Updates einspielen (Workflow) ### 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:** **1. Code aktualisieren:**
```bash ```bash
@@ -59,16 +88,12 @@ git pull origin main
docker-compose up -d --build docker-compose up -d --build
``` ```
**ODER Manuell (ohne Compose):** **ODER Manuell:**
```bash ```bash
# Alten Container stoppen & löschen
docker stop docker-dashboard docker stop docker-dashboard
docker rm docker-dashboard docker rm docker-dashboard
docker build -t docker-dashboard-frontend .
# Image neu bauen # (Dann docker run Befehl von oben)
docker build -t docker-dashboard-frontend ./frontend
# Neu starten (siehe Befehl oben unter "Container starten")
``` ```
--- ---
@@ -77,7 +102,7 @@ docker build -t docker-dashboard-frontend ./frontend
Dieses Projekt wird unter `https://git.klenzel.net/Klenzel/docker_dashboard` verwaltet. Dieses Projekt wird unter `https://git.klenzel.net/Klenzel/docker_dashboard` verwaltet.
**Initiales Setup (falls noch nicht geschehen):** **Initiales Setup:**
```bash ```bash
git init git init
git remote add origin https://git.klenzel.net/Klenzel/docker_dashboard git remote add origin https://git.klenzel.net/Klenzel/docker_dashboard
@@ -97,10 +122,9 @@ git push origin main
## 📂 Projektstruktur ## 📂 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. - `frontend/`: Quellcode der Next.js Anwendung.
- `src/app/`: Next.js App Router Pages. - `src/app/`: Pages & Routing.
- `src/lib/`: Hilfsfunktionen und API-Clients. - `src/lib/`: API-Logik (Netbox Fetching).
- `src/components/`: UI-Komponenten. - `src/components/`: UI-Bausteine.
```

View File

@@ -1,7 +1,7 @@
services: services:
netbox-docker-ui: netbox-docker-ui:
build: build:
context: ./frontend context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: netbox-docker-ui container_name: netbox-docker-ui
restart: unless-stopped restart: unless-stopped