Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Docker Container über Script täglich neu starten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Docker Container über Script täglich neu starten

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Matze1909 last edited by

      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

      haselchen OliverIO 2 Replies Last reply Reply Quote 0
      • haselchen
        haselchen Most Active @Matze1909 last edited by

        @matze1909

        Möchtest Du dem Problem nicht auf die Spur kommen, bevor Du da irgendwelche Krücken benutzt?

        M 1 Reply Last reply Reply Quote 1
        • OliverIO
          OliverIO @Matze1909 last edited by

          @matze1909

          Der iobroker Container liefert ein Health Status
          So kann man neustarten wenn der healthstatus sich ändert

          https://stackoverflow.com/questions/47088261/restarting-an-unhealthy-docker-container-based-on-healthcheck

          Generell sollte man aber das Grundübel abstellen
          Den Container evtl mal auf debug stellen und das Container log prüfen

          1 Reply Last reply Reply Quote 1
          • M
            Matze1909 @haselchen last edited by

            @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

            OliverIO 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active last edited by Marc Berg

              @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.

              1. /var/run/docker.sock in den ioB-Container durchreichen (wie ein Volume)
              2. Das Node-Module "dockerode" in den Javascript-Adapter einbinden
              3. 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.

              M 1 Reply Last reply Reply Quote 1
              • OliverIO
                OliverIO @Matze1909 last edited by OliverIO

                @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=58062

                Oder als NPM Paket
                https://www.npmjs.com/package/portainer-api-client

                1 Reply Last reply Reply Quote 1
                • M
                  Matze1909 @Marc Berg last edited by

                  @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

                  OliverIO Codierknecht 2 Replies Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Matze1909 last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @Matze1909 last edited by

                      @matze1909

                      @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.

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      749
                      Online

                      31.7k
                      Users

                      79.7k
                      Topics

                      1.3m
                      Posts

                      5
                      9
                      271
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo