2016-06-02 27 views
1

Es gibt etwas, das ich in vielen Beispielen docker fehlt, und das ist persistente Daten. Habe ich Recht, wenn ich folge, dass jeder gestoppte Container seine Daten verliert?Wie führe ich einen Prestashop-Andock-Container mit persistenten Daten aus?

Ich habe diese Prestashop Bild mit seiner internen Datenbank ausgeführt wird: https://hub.docker.com/r/prestashop/prestashop/

Sie führen gerade docker run -ti --name some-prestashop -p 8080:80 -d prestashop/prestashop

gut Sie Ihre Demo bekam dann, aber nicht sehr praktisch. Zuerst muss ich einen externen MySQL-Container anhängen, aber dieser verliert auch alle seine Daten, wenn zum Beispiel mein Server neu startet.

Und was ist mit all den Modulen und Themen, die dem Prestashop Container hinzugefügt werden?

Es hat mit Volumes zu tun, aber es ist mir nicht klar, wie alle Host-Volumes korrekt zugeordnet werden müssen und welcher Pfad zum Host normalerweise gewählt wird./opt/prestashop er etwas?

Antwort

0

Zunächst einmal habe ich keine Erfahrung mit PrestaShop. Dies ist ein Beispiel, das Sie für jeden Andockcontainer verwenden können (von dem Sie die Daten beibehalten möchten). Mit der neuen Version von Docker (1.11) ist es ziemlich einfach, Ihre Daten zu "persistieren". zuerst Ihre Namen Volume erstellen:

docker volume create --name prestashop-volume 

Sie dieses Volumen in /var/lib/docker/volumes sehen: Prestashop-Volumen

Nachdem Sie Ihren Namen Volumenbehälter erstellt haben Sie Ihren Behälter mit dem Volumenbehälter verbinden:

docker run -ti --name some-prestashop -p 8080:80 -d -v prestashop-volume:/path/to/what/you/want/to/persist :prestashop/prestashop 

(wenn Sie wirklich wollen alles anhalten, ich glaube, Sie den Pfad verwenden können :/)

Jetzt können Sie tun, was Sie in Ihrer Datenbank wollen. Wenn Ihr Container ausfällt oder Sie den Container löschen, ist das benannte Volume weiterhin vorhanden und Sie können Ihren Container erneut mit dem benannten Volume verbinden.

Um es noch einfacher machen Sie einen cron-Job zu schaffen, die eine TAR des Inhalts /var/lib/docker/volumes/prestashop-volume/ schafft Wenn wirklich alles, was Sie Ihr Volumen wiederherstellen weg von dem benannten Volumen neu zu erstellen und entpacken Sie Ihre .tar- Datei darin.

+0

Vielen Dank, das war einfach :) Die Bände innerhalb der Prestashop Dockerfile sind die Orte, die der Außenwelt ausgesetzt sind? – user3411864

+0

Ich denke, diese VOLUME xxx sind Mountpunkte in Ihrem Container. Hoffe, das kann dir helfen. Abschnitt: VOLUMEN: https://docs.docker.com/engine/reference/builder/ – lvthillo