Update
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
[] []
|
||||
|
||||
|
||||
# 📦 StackPulse
|
||||
|
||||
**StackPulse** ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert.
|
||||
@@ -25,7 +28,7 @@ Ziel:
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
<summary>ð^|^e¡ v0.2.0 – In Entwicklung</summary>
|
||||
<summary>✅ v0.2.0 – Release</summary>
|
||||
|
||||
### Backend
|
||||
- [x] Anbindung einer SQLite-Datenbank
|
||||
@@ -54,7 +57,6 @@ Ziel:
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Projektstruktur
|
||||
@@ -62,6 +64,8 @@ Ziel:
|
||||
```bash
|
||||
stackpulse/
|
||||
├── backend/ # Node.js Backend mit Express
|
||||
│ └── data # SQlite Datenbank
|
||||
│ └── db # Datenbank-Integration
|
||||
├── frontend/ # React Frontend mit Tailwind
|
||||
├── scripts/ # Lokale Hilfsskripte (nicht Teil des Images)
|
||||
│ └── start-dev.sh #Skript für den lokalen Start
|
||||
@@ -102,6 +106,18 @@ services:
|
||||
- STACK_SELF_ID=ID_deiner_stackpulse_ID
|
||||
```
|
||||
|
||||
Die PORTAINER_ENDPOINT_ID erhältst du, wenn du die die URL im Browser ansiehst, wenn du das Dashboard in Portainer öffnest:
|
||||
|
||||

|
||||
|
||||
Die 3 wäre in diesem Fall Endpoint-ID.
|
||||
|
||||
Die STACK_SELF_ID findest du, wenn du das Frontend von StackPulse öffnest:
|
||||
|
||||

|
||||
|
||||
Diese ID kann erst nach dem Deploy von Stackpulse ausgelesen werden. Vergiss daher nicht, nach dem Hinterlegen der ID in den Variablen das Stack noch einmal zu redeployen!
|
||||
|
||||
---
|
||||
|
||||
## 📋 Voraussetzungen
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -17,7 +17,8 @@ export default function Stacks() {
|
||||
return {
|
||||
...stack,
|
||||
redeploying: previous?.redeploying || stack.redeploying || false,
|
||||
redeployDisabled: stack.redeployDisabled ?? previous?.redeployDisabled ?? false
|
||||
redeployDisabled: stack.redeployDisabled ?? previous?.redeployDisabled ?? false,
|
||||
duplicateName: stack.duplicateName ?? previous?.duplicateName ?? false
|
||||
};
|
||||
});
|
||||
};
|
||||
@@ -94,9 +95,6 @@ export default function Stacks() {
|
||||
};
|
||||
|
||||
const handleRedeploy = async (stackId) => {
|
||||
const targetStack = stacks.find((stack) => stack.Id === stackId);
|
||||
if (targetStack?.redeployDisabled) return;
|
||||
|
||||
setSelectedStackIds((prev) => prev.filter((id) => id !== stackId));
|
||||
setStacks((prev) =>
|
||||
prev.map((stack) =>
|
||||
@@ -254,6 +252,9 @@ export default function Stacks() {
|
||||
<div>
|
||||
<p className="text-lg font-semibold text-white">{stack.Name}</p>
|
||||
<p className="text-sm text-gray-400">ID: {stack.Id}</p>
|
||||
{stack.duplicateName && (
|
||||
<p className="text-xs text-amber-300">⚠️ Doppelter Name erkannt</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -275,8 +276,6 @@ export default function Stacks() {
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<span className="text-xs uppercase tracking-wide text-gray-400">Status</span>
|
||||
<span className="text-amber-300">Veraltet</span>
|
||||
<button
|
||||
onClick={() => handleRedeploy(stack.Id)}
|
||||
disabled={isRedeploying}
|
||||
|
||||
Reference in New Issue
Block a user