Refactor: Moved Dockerfile to root, updated structure and documentation for Netbox integration
This commit is contained in:
@@ -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
|
||||||
66
README.md
66
README.md
@@ -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.
|
||||||
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user