NEWS
Docker Container über Script täglich neu starten
-
Moin,
ich habe über Portainer zwei Docker Container laufen:
- ioBroker
- PSA Car Controller
Leider hängt sich der PSA Car Controller regelmäßig auf ohne dass er auf einen Fehler läuft, so dass ich ihn gerne jeden Tag neu starten lassen würde.
Nun meine Fragen:Kann ich über ein Script im ioBroker auf den PSA Docker zugreifen und diesen täglich neustarten lassen?
Wenn nicht, wie kann ich ansonsten einstellen, dass sich der PSA Docker täglich neustartet
Im Portainer habe ich leider keine entsprechende Funktion gefunden.Vielen Danke für eure Hilfe.
Matze -
Möchtest Du dem Problem nicht auf die Spur kommen, bevor Du da irgendwelche Krücken benutzt?
-
Der iobroker Container liefert ein Health Status
So kann man neustarten wenn der healthstatus sich ändertGenerell sollte man aber das Grundübel abstellen
Den Container evtl mal auf debug stellen und das Container log prüfen -
@haselchen und @oliverio
vielen Dank für eure Antworten.
Ich meine, dass der Container nicht auf unhealthy geht. Ich werde aber das nächste mal, wenn die url des PSA Car Controllers nicht erreichbar ist, den Status prüfen und mir den Log anschauen.
Ich vermute, dass es an der "mittelmäßigen" Api zu PSA/Stellentis liegt, dass hier hin und wieder die Verbindung verloren geht und keine Daten abgefragt/geliefert werden. Ich bin mir aber nicht sicher. Vielleicht helfen mir die Daten aus dem Log weiter.
Auf jeden Fall hat es immer sofort funktioniert, wenn der Container neu gestartet wurde. Daher dachte ich, dass dies die Lösung ist.
Ich melde mich wieder, wenn ich Neuigkeiten haben.
Dennoch wäre ich daran interessiert, ob es eine Möglichkeit gibt über ein Script einen "anderen" Container neu zu starten. Es müsste auch gar nicht zwingend täglich sein. Mir würde auch "bei Bedarf" reichen. Ich würde dann das Script mit meiner Alexa verbinden und immer wenn die URL nicht erreichbar ist, über einen Sprachbefehl den Container neu starten. Das geht viel schneller, als die Anmeldung bei Portainer, Auswahl des Containers, Neustart etc..Vielen Dank und viele Grüße
Matze -
@matze1909 sagte in Docker Container über Script täglich neu starten:
Dennoch wäre ich daran interessiert, ob es eine Möglichkeit gibt über ein Script einen "anderen" Container neu zu starten.
Das geht, aber natürlich nur, indem man die Sicherheits-/Isolationsfunktionen abschaltet.
/var/run/docker.sock
in den ioB-Container durchreichen (wie ein Volume)- Das Node-Module "dockerode" in den Javascript-Adapter einbinden
- Beispiel-Skript:
var Docker = require('dockerode'); var docker = new Docker({socketPath: '/var/run/docker.sock'}); var container = docker.getContainer('grafana2'); container.stop((err, data) => { if (err) { console.error('Stoppen fehlgeschlagen:', err); return; } console.log('Container gestoppt'); setTimeout(() => { container.start((startErr, startData) => { if (startErr) { console.error('Starten fehlgeschlagen:', startErr); return; } console.log('Container gestartet'); }); }, 2000); // 2 Sekunden Pause zwischen Stop und Start });
Alternativ zum Mappen des Sockets kann man auch über die API auf den Docker-Host zugreifen:
var docker = new Docker({host: 'http://<dockerhost>', port: <dockerport>});
Dann musst du aber den API-Zugriff zulassen, was eine noch größere Lücke darstellt.
-
@matze1909
Dein portainer hat ebenfalls eine api
Absicherung läuft über api Token
https://www.reddit.com/r/portainer/comments/rsbvsv/api_endpoint_to_recreate_and_restart_container/?rdt=58062Oder als NPM Paket
https://www.npmjs.com/package/portainer-api-client -
@marc-berg
Danke für eure Nachrichten und die Mühe.
Das klingt so, als sollte man es lieber lassen.
Gut, dass ihr Profis so etwas dazu schreibt. Sonst läuft man Gefahr so etwas zu machen.Viele liebe Grüße
Matze -
@matze1909 sagte in Docker Container über Script täglich neu starten:
Das klingt so, als sollte man es lieber lassen
eigentlich nicht.
das ist ja bei dir im LAN
wenn da niemand ist der APIs ausnutzen kann
oder das dann auch macht ist ja keine Gefahr.
Wenn dann startet er halt den container neu.
Falls mehr sicherheit notwendig ist, dann schränkt man die api bspw per reverseproxy soweit ein, das wirklich nur das geht was man wirklich will. -
@oliverio sagte in Docker Container über Script täglich neu starten:
eigentlich nicht.
das ist ja bei dir im LAN
wenn da niemand ist der APIs ausnutzen kann
oder das dann auch macht ist ja keine Gefahr.
Wenn dann startet er halt den container neu.Solange Du von außen niemanden reinlässt oder irgendwelche genervten Pupertisten im eigenen Haus eine Gefahr darstellen, musst Du Dir eigentlich keine Sorgen machen.