Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:docker:apps:dokuwiki

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
thoschwiki:docker:apps:dokuwiki [06.09.2020 20:33]
thosch [Update des Images] mit Unterüberschriften weiter strukturiert
thoschwiki:docker:apps:dokuwiki [08.03.2022 10:03] (aktuell)
thosch [Integration in Træfik] Version-Pinning angepasst.
Zeile 1: Zeile 1:
-====== DokuWiki ======+====== DokuWiki (Docker) ======
  
-{{page>internals:bricks:dokuwiki#beschreibung&noheader}}+{{page>thoschwiki:bricks:dokuwiki#beschreibung&noheader}}
  
 ^ Image ^^ ^ Image ^^
Zeile 28: Zeile 28:
 </code> </code>
  
-Im Hinblick auf [[docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''20XX-XX-XXX-lsXX'') gepinnt werden.+Im Hinblick auf [[thoschwiki:docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''20XX-XX-XXX-lsXX'') gepinnt werden.
  
 ==== Parameter ==== ==== Parameter ====
Zeile 38: Zeile 38:
 | -e PGID= * | Vorgabe des //Gruppe// , mit der die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden. | | -e PGID= * | Vorgabe des //Gruppe// , mit der die Daten auf dem Docker-Host in die gemounteten Verzeichnisse geschrieben werden. |
 | -e TZ= * | Vorgabe der lokalen Zeitzone im [[wpde>Zeitzonen-Datenbank|Format Gebiet/Ort]]. | | -e TZ= * | Vorgabe der lokalen Zeitzone im [[wpde>Zeitzonen-Datenbank|Format Gebiet/Ort]]. |
-| -e APP_URL | Optional: Hier kann der Pfad vorgegeben werden, unter dem das Wiki auf dem Server zu erreichen ist (z.B. ''http://example.com/wiki'' statt ''http://example.com''). | 
 | -p | Port-Zuweisungen für den Zugriff per ''http'' (Default 80:80) bzw. ''https'' (Default 443:443) | | -p | Port-Zuweisungen für den Zugriff per ''http'' (Default 80:80) bzw. ''https'' (Default 443:443) |
 | -v * | Volumes, siehe [[#Volumes:|Unterabschnitt Volumes]] | | -v * | Volumes, siehe [[#Volumes:|Unterabschnitt Volumes]] |
Zeile 53: Zeile 52:
 | /config | In bzw. unterhalb dieses Ordners befinden sich die Konfigurationsdateien des //DokuWiki//, des Webservers [[wpde>Nginx|nginx]] einschließlich [[wpde>PHP]] sowie die Inhalte des //DokuWikis//. | | /config | In bzw. unterhalb dieses Ordners befinden sich die Konfigurationsdateien des //DokuWiki//, des Webservers [[wpde>Nginx|nginx]] einschließlich [[wpde>PHP]] sowie die Inhalte des //DokuWikis//. |
  
 +Sofern sitespezifische Interwiki-Link-Icons benutzen werden sollen, ist eine [[thoschwiki:docker:apps:dokuwiki#persistieren_von_sitespezifischen_interwiki-link-icons|Änderung bei den Volumes]] vorzunehmen.
 ===== docker-compose  ===== ===== docker-compose  =====
  
Zeile 61: Zeile 61:
 services: services:
   dokuwiki:   dokuwiki:
-    image: linuxserver/dokuwiki:20XX-XX-XXX-lsXX+    image: linuxserver/version-XXXX-XX-XX
     container_name: dokuwiki     container_name: dokuwiki
     environment:     environment:
Zeile 75: Zeile 75:
 </file> </file>
  
-Im Hinblick auf [[docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''20XX-XX-XXX-lsXX'') gepinnt werden.+Im Hinblick auf [[thoschwiki:docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''version-XXXX-XX-XX'') gepinnt werden
 + 
 +Sofern sitespezifische Interwiki-Link-Icons benutzen werden sollen, ist eine [[thoschwiki:docker:apps:dokuwiki#persistieren_von_sitespezifischen_interwiki-link-icons|Änderung bei den Volumes]] und somit an der ''docker-compose.yml'' vorzunehmen.
  
 ===== Integration in Træfik ===== ===== Integration in Træfik =====
Zeile 86: Zeile 88:
  
   dokuwiki:   dokuwiki:
-    image: linuxserver/dokuwiki:20XX-XX-XXX-lsXX+    image: linuxserver/version-XXXX-XX-XX
     container_name: dokuwiki     container_name: dokuwiki
     environment:     environment:
Zeile 101: Zeile 103:
 </code> </code>
  
-Im Hinblick auf [[docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''20XX-XX-XXX-lsXX'') gepinnt werden.+Im Hinblick auf [[thoschwiki:docker:apps:dokuwiki#update_des_images|mögliche Probleme bei einem unbeabsichtigten Update des Images]] sollte die Version des Images durch das Anfügen des Versions-Tags (Format ''version-XXXX-XX-XX'') gepinnt werden. 
 + 
 +Sofern sitespezifische Interwiki-Link-Icons benutzen werden sollen, ist eine [[thoschwiki:docker:apps:dokuwiki#persistieren_von_sitespezifischen_interwiki-link-icons|Änderung bei den Volumes]] und somit an der ''docker-compose.yml'' vorzunehmen. 
 + 
  
 ===== Konfiguration der Anwendung ===== ===== Konfiguration der Anwendung =====
Zeile 107: Zeile 113:
 Für die Ersteinrichtung des //DokuWikis// ist in der Installation das Script ''%%/install.php%%'' aufzurufen (Aufruf von ''%%http[s]://$IP[:$PORT]/install.php%%'' bzw. ''%%http[s]://$DOMAIN[:$PORT]/install.php%%'') Für die Ersteinrichtung des //DokuWikis// ist in der Installation das Script ''%%/install.php%%'' aufzurufen (Aufruf von ''%%http[s]://$IP[:$PORT]/install.php%%'' bzw. ''%%http[s]://$DOMAIN[:$PORT]/install.php%%'')
  
 +===== Persistieren von sitespezifischen Interwiki-Link-Icons =====
 +
 +Das DokuWiki unterstütz das Konzept der [[doku>de:interwiki|Interwiki-Links]]. Hierbei handelt es sich um vordefinierte, verkürzte Markups (Shortcuts) zum Verlinken auf andere Wikis. Es ist möglich eigene [[thoschwiki:dokuwiki:interwikilinkshortcuts|Shortcuts für Interwiki-Links]] zu definieren. Vor den Interwiki-Links wird eine kleine Grafik von 16x16 Pixeln angezeigt. Es ist möglich für die eigenen Shortcuts eigene Icons zu hinterlegen.
 +
 +Diese Grafikdateien sind im Verzeichnis ''lib/images/interwiki'' abgelegt. Beim Einsatz des DokuWiki in einem Docker-Container -– zumindest bei Verwendung des Images [[dockerhub>linuxserver/dokuwiki]] -–  tritt das Problem auf, dass sich das Verzeichnis ''lib/images/interwiki'' **außerhalb** des vorgesehenen Volumes befindet und somit bei jedem Neuerstellen des Containers mit den Werten aus dem Image überschrieben wird.
 +
 +Um dieses Problem zu lösen, habe ich ein zusätzliches Volume eingeführt, dass unter ''/app/dokuwiki/lib/images'' im Container gemountet wird. Durch die Verwendung dieses Mountpoints werden nicht nur die Icons für die Interwiki-Links, sondern alle Emojis und Interwiki-Link-Icons außerhalb des Containers gespeichert.
 +
 +==== Vorbereitende Arbeiten ====
 +
 +Das Mounten des Volumes nach ''/app/dokuwiki/lib/images'' führt dazu, dass das bestehende Verzeichnis ''/app/dokuwiki/lib/images'' im Image mit den systemseitigen Grafiken durch das gemountete Volume überdeckt wird. Ohne diese Dateien fehlen die entsprechenden Grafiken. 
 +
 +Das Volume ist daher mit dem systemseitigen Grafiken initial zu "befüllen". Hierfür habe ich ein Helfer-Script geschrieben, das
 +
 +  - einen zusätzlichen, minimalen DokuWiki-Container generiert, bei dem das Volume für die Icons das Verzeichnis ''lib/images'' nicht überdeckt
 +  - per ''docker exec'' innerhalb des Containers die System-Icons in das Volume kopiert (sowie die Rechte berichtigt) sowie
 +  - den Hilfs-Container beendet und zerstört
 +
 +<code bash>
 +#!/bin/sh
 +#
 +# Helper script to copy the icons from an complete container into
 +# the volume which will contain and persist the icons
 +
 +echo "Start Container..."
 +
 +# Minimal container w/o port etc. and mounted 'images' volume
 +docker run \
 +  --name=dokuwikihelper \
 +  -d \
 +  --rm \
 +  -e PUID=2000 \
 +  -e PGID=2000 \
 +  -e TZ=Europe/Berlin \
 +  -v /path/to/DockerData/DokuWiki/images:/images \
 +  linuxserver/dokuwiki
 +
 +
 +echo
 +echo "Kopiere Dateien..."
 +# Copy icons to mounted volume
 +# ('cp -a /app/dokuwiki/lib/images/* /images' did not work...)
 +docker exec -it dokuwikihelper cp -a /app/dokuwiki/lib/images /
 +# Change owner to 'abc' which is used to run DokuWiki in the container
 +# to prevent that 'root' is the owner
 +docker exec -it dokuwikihelper chown abc:abc -R /images
 +
 +echo
 +echo "ls -axl /path/to/DockerData/DokuWiki/images"
 +ls -axl /path/to/DockerData/DokuWiki/images
 +
 +echo
 +echo "Stoppe Container..."
 +docker stop dokuwikihelper
 +
 +echo "Die eigenen Icons sind noch nach /path/to/DockerData/DokuWiki/images"
 +echo "bzw. /path/to/DockerData/DokuWiki/images/interwiki zu kopieren und"
 +echo "ggf. die Dateirechte anzupassen."
 +
 +</code>
 +
 +
 +==== Änderungen der Volume-Definition ====
 +
 +Es ergeben sich damit die folgenden Volumes:
 +
 +^ Pfad im Container ^ Funktion ^
 +| /config | In bzw. unterhalb dieses Ordners befinden sich die Konfigurationsdateien des //DokuWiki//, des Webservers [[wpde>Nginx|nginx]] einschließlich [[wpde>PHP]] sowie die Inhalte des //DokuWikis//. |
 +| /app/dokuwiki/lib/images | Verzeichnis mit den Wiki-seitigen Grafikdateien |
 +
 +Die Definition der Volumes in der ''docker-compose.yml'' ändert sich wie folgt:
 +
 +<code>
 +    volumes:
 +      - /path/to/DokuWiki/config:/config
 +      - /path/to//DokuWiki/images:/app/dokuwiki/lib/images
 +</code>
  
 ===== Update des Images ===== ===== Update des Images =====
Zeile 114: Zeile 197:
 Sofern sich die //DokuWiki//-Version im Docker-Image ändert, kann es nach dem Update des Images zu einem nicht mehr lauffähigen System kommen. Die neue Version von //DokuWiki// kann u.U. Änderungen der Datenstrukturen vorsehen, die eine Anpassung (Migration) der Bestandsdaten aus der Vorversion erforderlich machen. Bei einer "normalen" Installation ohne den Einsatz von Docker erfolgt diese Migration anlässlich des Upgrades von //DokuWiki//. Erfolgt das Update von //DokuWiki// jedoch durch den Austausch der //DokuWiki//-Software im Rahmen des Updates des Images, dann laufen die notwendigen Migrationsroutinen nicht. In der Folgen passen die Daten dann nicht zur neuen //DokuWiki//-Version. Sofern sich die //DokuWiki//-Version im Docker-Image ändert, kann es nach dem Update des Images zu einem nicht mehr lauffähigen System kommen. Die neue Version von //DokuWiki// kann u.U. Änderungen der Datenstrukturen vorsehen, die eine Anpassung (Migration) der Bestandsdaten aus der Vorversion erforderlich machen. Bei einer "normalen" Installation ohne den Einsatz von Docker erfolgt diese Migration anlässlich des Upgrades von //DokuWiki//. Erfolgt das Update von //DokuWiki// jedoch durch den Austausch der //DokuWiki//-Software im Rahmen des Updates des Images, dann laufen die notwendigen Migrationsroutinen nicht. In der Folgen passen die Daten dann nicht zur neuen //DokuWiki//-Version.
  
 +<note tip>
 +Die beschriebenen Problem mit der //Dokuwiki//-version kann man umgehen, indem man für das Image ein Labl mit der jeweiligen //Dokuwiki//-Version nutzt. Derzeit (März 2022 ist dies das Label ''version-2020-07-29''.
 +
 +Bei Verwendung des Labels werden nur Images geladen, die die vorgebene //Dokuwiki//-version enthalten. Ändert sich diese sollten keine neuen Images mehr geladen werden.
 +
 +Ändert sich die //Dokuwiki//-Version wären die in der Folge beschriebenen Schritte einzuhalten und das Label entsprechend anzupassen.
 +</note>
 ==== Identifikation kritischer Updates ==== ==== Identifikation kritischer Updates ====
  
thoschwiki/docker/apps/dokuwiki.1599417239.txt.gz · Zuletzt geändert: 06.09.2020 20:33 von thosch