Docker Container nach Neustart immer wieder aktuell??!

Kamikaze01

Benutzer
Mitglied seit
06. Dez 2020
Beiträge
200
Punkte für Reaktionen
40
Punkte
28
Hallo liebe Freunde von Synology.

Ich habe mir via docker compose diesen Container installiert.
Das ist im prinzip nichts anderes wie der linuxserver RADARR mit ein paar extra scripts zum automatischen download von MovieExtras wie trailer etc...

Nun möchte ich an diesen scripts jedoch ein paar Änderungen vornehmen und sie nutzen.
Doch jedes Mal, wenn ich den Container stoppe, die scripte bearbeite und den Container wieder starte sind alle Scripte in ihrem originalzustand vorhanden.
Selbst, wenn ich alle scripte aus dem entsprechenden Ordner lösche, sind sie sofort nach einem Neustart wieder da.

Wo finde ich die Einstellung und/oder die Variable um das zu verhindern? :(


Vielen Dank :)
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Dann hast du eine Container und somit Docker nicht verstanden. Alles was im Container geändert wird und nicht nach draußen gemappt wird geht beim neu starten verloren! Das ist völlig normal. Langfristeige Änderungen sind nur möglich wenn bei den ausgelagerten Files und Ordner nach Start in den Container gemountet werden. Wenn das im Container nicht vorgesehen ist hast du Pech.
 
  • Like
Reaktionen: Kamikaze01

Kamikaze01

Benutzer
Mitglied seit
06. Dez 2020
Beiträge
200
Punkte für Reaktionen
40
Punkte
28
Alles klar :)
Ja da hast Du recht - das hatte ich wohl noch nicht ganz verstanden. Vielen Dank für die Erklärung. Somit habe ich wieder etwas gelernt.
Ich werde mir das etwas genauer ansehen.
Danke auf jeden Fall.
 
  • Like
Reaktionen: EDvonSchleck

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Es ist egal, ob ein Volume vorgesehen ist oder nicht, man kann nahezu gegen jeden Container-Pfad ein Volume mappen.

Zeig doch mal was Du genau tust (mit den exakten Befehlen), sodass wir erkennen können, ob es eine Lösung für Dein Problem gibt. Wenn man die Pfade für die Skripte in der Konfiguration selbst angeben kann, dann sollte es einfach sein das Problem zu lösen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Ich hab mir das Git-Projekt mal angesehen. So wie das Image gebaut ist, ist es tatsächlich nicht vorgesehen eigene Skripte bequem zu injizieren.

Die Skripte liegen in /scripts und werden bei jedem Start nach /config/extended/scripts/ kopiert. Vor dem Kopieren wird /config/extended/scripts/ geleert.

Sprich, wenn du ein Bind Volume auf den Container-Pfad /scripts anlegen würdest, wären alle vorhandenen Skripte im Container unsichtbar. Man müsste die Skripte also vorher rauskopieren, damit sie über den Bind wieder mit reinkommen, was aber keine wirklich gute Idee ist, da man sonst nie von aktualisierten Skripten aus dem Image profitieren würde.


Man kann den Container-Start erweitern, um das gewünschte Verhalten zu bekommen. Das Image verwendet s6-overlay, sodass man durch das Injizieren einer Datei geändertes oder zusätzliches Verhalten reinbekommen kann.

Erzeuge eine Datei namens 99-extra-scripts.bash (die 99 ist in diesem Fall entscheidend, der Rest danach ist frei wählbar!) auf der Syno (falls nötig noch chmod +x auf die Datei anwenden, damit sie ausführbar wird):

Code:
#!/usr/bin/with-contenv bash

if [ -d "/config/extended/scripts" ]; then
    echo "Importing extended scripts..."
    cp -r /myscripts/* /config/extended/scripts/
fi

chmod -R 777 /config/extended/scripts
chown -R abc:abc /config/extended

echo "Complete..."
exit $?
Dann mappe diese Datei als Volume (Achtung als einzelne Datei statt eines Verzeichnisses!) dann nach /etc/cont-init.d/99-extra-scripts.bash. Deine Skripte legst du dann auf dem Host in ein Verzeichnis, dass gegen den Container-Pfad /myscrpts/ mappst und voilà: ab dem nächsten Container-Start würde das injizierte Startskript mitlaufen und deine Skripte aus dem /myscrpts/ Verzeichnis mit in das Ausführungsverzeichnis kopieren.
 
Zuletzt bearbeitet:

Kamikaze01

Benutzer
Mitglied seit
06. Dez 2020
Beiträge
200
Punkte für Reaktionen
40
Punkte
28
WoW :) Das nenne ich mal eine ausführliche Antwort mit Lösungsvorschlag. Vielen vielen Dank !!
Glücklicherweise kann man bei RADARR den PFAD zu den Scripten angeben und laut dem Programmierer kann ich die Scripte anpassen und an einem eigenen Ort ablegen und brauche dann nur im Container selbst den Pfad zum User-Script angeben. Dann wird das im Docker integrierte Script ignoriert....

Aber tausend Dank für Deine Lösung auf jeden Fall !! Das hilft bestimmt anderen sehr und mir in Zukunft womöglich auch ;)
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat