2016-03-19 6 views
2

Ich erstelle eine Webanwendung, die es Benutzern ermöglichen soll, Profilbilder hochzuladen. Ich möchte, dass die Anwendung in sich abgeschlossen ist, so dass Benutzer kein s3 oder anderes Cloud-Speicher-Dienstkonto benötigen.Wo sollte eine dockerisierte Webanwendung hochgeladene Dateien speichern?

Es ist am besten, Docker-Container so klein wie möglich zu halten, also sollte ich ein Volume erstellen. Daher möchte ich, dass das Volume automatisch erstellt wird, sodass die Benutzer beim Ausführen des Containers kein Volume angeben müssen, aber die Dokumentation für die Anweisung VOLUME in dockerfiles verwirrt mich.

Die VOLUME-Anweisung erstellt einen Mountpunkt mit dem angegebenen Namen und markiert es als extern bereitgestellte Volumes von nativen Hosts oder anderen Containern.

Was bedeutet es, als solche gekennzeichnet zu werden? Die Daten werden von der Anwendung geschrieben, sie stammen nicht von einer externen Quelle.

Antwort

2

Wenn Sie ein Volumen im dockerfile markieren, sagt VOLUME /site/uploads, macht es sehr einfach, später in einem anderen Behälter mit --volumes-from <container-name> laufen und /site/uploads in den neuen Containern mit all den Daten, die geschrieben wurden und dass geschrieben wird (wenn der erste Container noch läuft).

Sie können dieses Volume auch mit docker volume ls anzeigen, nachdem Sie den Container das erste Mal gestartet haben.

Das einzige Problem, das Sie möglicherweise haben, wenn Sie den Container löschen, besteht darin, dass Sie die von docker inspect <container-name> bereitgestellte Zuordnung verlieren, die Ihnen mitteilt, welches Volume Ihr Container erstellt hat. Um das Volumen zu sehen, das Ihr Container wirklich klar und schnell erstellt hat, versuchen Sie docker inspect <container-name> | jq '.[].Mounts', wenn Sie jq installiert haben. Anderenfalls könnte docker inspect <container-name> | grep Mounts -A 10 ausreichen, wenn Sie nur ein Volume haben. (Sie können auch waten nur durch alle json selbst)

Auch wenn Sie den Behälter entfernen, die das Volumen erstellt hat, wird das Volumen auf dem System bleiben, sichtbar mit docker volume ls es sei denn, Sie docker volume rm <volume-name>

Hinweis laufen: Ich m mit Docker Version 1.10.3

2

Sie werden damit keine Probleme haben, die Bilder werden ohne Probleme in das gemountete Dateisystem hochgeladen.

Vielleicht müssen Sie freie Berechtigungen für den Upload-Ordner angeben, damit Sie darauf schreiben können.

Verwandte Themen