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 [17.09.2020 19:44]
thosch [Parameter] '-e APP_URL' wurde mit Release 2020-07-29-ls48 entfernt
thoschwiki:docker:apps:dokuwiki [08.03.2022 10:03] (aktuell)
thosch [Integration in Træfik] Version-Pinning angepasst.
Zeile 1: Zeile 1:
 ====== DokuWiki (Docker) ====== ====== 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 52: 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 60: 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 74: 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 85: 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 100: 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 106: 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 113: 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.1600364673.txt.gz · Zuletzt geändert: 17.09.2020 19:44 von thosch