Mal ein Beispiel, was man so machen kann. Ich habe bei Hetzner (Vorsicht Werbelink) ein paar Cloud-Server. Auf einem läuft eine DokuWiki Webseite.
Das schöne daran ist, das es ohne DB auskommt, steht alles in den Files auf der Platte. Man kommt also ziemlich sicher immer dran, auch wenn man was kaputt macht 😉
Nun ist es für den paranoiden Sysadmin nicht so gut, wenn man den Datenbestand nur an einer Stelle lagert. Da kommt jetzt Docker ins Spiel. Ich möchte diese Installation spiegeln, sprich im Netz ist die primäre DokuWiki Installation, hier lokal läuft eine gespiegelte Version.
Ich gehe davon aus, das ihr den Docker Container für DokuWiki ans Laufen bekommen habt. Nachdem der Docker Container installiert wurde, ruft man ganz normal die Installation auf, mit
localhost:8060/install.phpNach erfolgreicher Installation möchte ich jetzt die Daten aus dem Web in den permanenten Datenspeicher kopieren. Wo liegt dieser? Man klickt in der Übersicht auf den Container und sieht die Container Details
Etwas weiter unten steht dann Volumes. Das interessiert uns.
ac909d7f-8dd4-4f81-9257-32140b174fe3-grafik.png
Hier liegen die Daten der Installation, die permanent erhalten bleiben weil sie auf dem Host lagern.
ls -lha /var/lib/docker/volumes/18bf58cb90feeb4542cfeae0921ba68a8bc2b25b9d0d7eceb7594b044a39a97a/_data/dokuwiki/data/ insgesamt 56K drwxr-xr-x 1 911 911 568 29. Jun 18:08 . drwxr-xr-x 1 911 911 62 7. Aug 09:20 .. drwxr-xr-x 1 911 911 75K 8. Aug 20:34 attic drwxr-xr-x 1 911 911 92 5. Mär 10:06 attribute drwxr-xr-x 1 911 911 84 5. Mär 10:06 cache drwxr-xr-x 1 911 911 560 29. Jun 18:08 data -rw-r--r-- 1 911 911 27K 29. Jun 18:08 deleted.files -rw-r--r-- 1 911 911 6,4K 5. Mär 10:06 dont-panic-if-you-see-this-in-your-logs-it-means-your-directory-permissions-are-correct.png -rw-r--r-- 1 911 911 12K 5. Mär 10:07 dont-panic-if-you-see-this-in-your-logs-it-means-your-directory-permissions-are-correct.xcf -rw-r--r-- 1 911 911 32 5. Mär 10:06 _dummy -rw-r--r-- 1 911 911 143 5. Mär 10:06 .htaccess drwxr-xr-x 1 911 911 2,1K 9. Aug 05:07 index drwxr-xr-x 1 911 911 160 9. Aug 05:07 locks drwxr-xr-x 1 911 911 12 29. Jun 18:08 log drwxr-xr-x 1 911 911 1,5K 31. Jul 13:18 media drwxr-xr-x 1 911 911 192 9. Apr 16:55 media_attic drwxr-xr-x 1 911 911 2,2K 31. Jul 13:18 media_meta drwxr-xr-x 1 911 911 8,9K 8. Aug 16:27 meta drwxr-xr-x 1 911 911 2,5K 30. Jul 11:29 pages drwxr-xr-x 1 911 911 12 3. Aug 18:40 tmpOk, wir brauchen ein Script 😉
#!/bin/bash ############################################################################### # Rsync-Script # Hetzner-Cloud <-> Docker Container ############################################################################# rsync -avzh root@<IP-Adresse>:/usr/share/nginx/dokuwiki/data/ /var/lib/docker/volumes/18bf58cb90feeb4542cfeae0921ba68a8bc2b25b9d0d7eceb7594b044a39a97a/_data/dokuwiki/data/ chown -R 911:911 /var/lib/docker/volumes/18bf58cb90feeb4542cfeae0921ba68a8bc2b25b9d0d7eceb7594b044a39a97a/_data/dokuwiki/data/Erster Befehl kopiert mittels rsync die Daten vom Server in das Docker Verzeichnis. Da auf dem Server die Files andere Benutzerrechte haben, als im Docker Container, gibt es dann prompt eine Fehlermeldung.
Auf dem Server lautet der User
www-dataim Docker Container
911Ok, bekommt man hin 🙂 In der zweiten Zeile werden die Benutzerrechte angepasst. Fertig.
Das Ganze dann mittels Cronjob laufen lassen, z.B.
# m h dom mon dow command 30 05 * * * /root/sync_dokuwiki.shIm Beispiel wird jeden Tag um 05:30 Uhr gesynct. Fertig, klappt so weit, wie ich es gerne hätte.