Python Docker Dateien speichern - Bind/Mount/Volume/Share Problem

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

arminf82

Benutzer
Registriert
02. Feb. 2021
Beiträge
1
Reaktionspunkte
0
Punkte
1
Guten Morgen,

ich habe einen Docker Contrainer eine Dateie in einem SharedFolder (/volume1/docker/storeText) speichern soll. Auf meinem Lokalen PC funktioniert es. Lokal starte ich den Container und die Datei wird im gewünschten Ort gespeichert. Auf meiner NAS läuft der Container, was ich am Log sehe, aber die Datei wird nicht in dem gemappten Ordner gespeichert. Was mache ich falsch?

Dockerfile
FROM python:3
WORKDIR /wd
COPY savetext.py ./
CMD ["python3","savetext.py"]

savetext.py
print("Script Start.")
import os
file = open("textDatei.txt","a")
file.writelines("Inhalt von Datei.")
file.close()
print("Script Ende.")

Docker Image erstellen auf Lokaler Maschine:
docker build -t saveText .

Container auf lokalem Ubuntu laufen lassen:
docker run -v ${PWD}:/wd saveText

Die Datei textDatei.txt wird auf meinem lokalen Ubuntu in dem Pfad geschrieben, in dem ich gerade bin.


Auf meiner Synology NAS
Docker 18.09.0-0513 + Portainer
habe ich unterschiedliche Varianten probiert, die aber nicht zum Erfolg geführt haben.

Env:
PUID:xxxx, PGID:yyyy

Über die DSM Docker GUI:
Volume

File/Folder: /volume1/docker/storeText # PUID:xxxx ist Owner von dem Ordner und hat volle Rechte auf das Docker Share.
Mount path: /wd
Type: rw

Bind/Mount über die ENV:
-v source=/volume1/docker/storeText,target=/wd,type=bind

Gleiches habe ich in Portainer probiert, was auch nicht funktioniert.
 
Öhm, im Dockerfile kopierst Du savetext.py nach /wd, um das Verzeichnis dann beim Starten des Containers mit einem bind zu ersetzen... Sprich der original Inhalt des Verzeichnis /wd wird verdeckt durch den Inhalt von /volume1/docker/storeText.

Damit PUID und PGID etwas bringen, muss Du ein Entrypointskript basteln, was damit auch etwas tut... So sind es einfach nur Variablen im Container die von nichts verwendet wird.
 
Status
Für weitere Antworten geschlossen.
 

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