MediaWiki und LDAP/Active Directory in Docker
Projektziel: einen Docker-Container bauen, der automatisch die erforderlichen Sachen hat, die MediaWiki braucht um eine LDAP-Anmeldung an einem Domänencontroller hinzubekommen.
Annahmen in diesem Projekt: wir haben eine ldap.json
und eine angepasste LocalSettings.php
nach der offiziellen Anleitung. Wir erstellen also erst einmal beide Dateien (z.B. mit dem regulärem MediaWiki-Docker-Container) und passen uns die dann an.
Das Image bauen wir auf MediaWiki Version 1.41.1 – kann aber auch gerne angepasst werden wenn eine neue Version kommt.
Wir mappen vom Host folgende Ordner in die Container:
– /data/wiki/images (Bilder)
– /data/wiki/database (die MySQL-Datenbank)
– /data/wiki/ldap.json (die LDAP-Konfigurationsdatei)
– /data/wiki/LocalSettings.php (die LocalSettings)
Als Container-Namen nutzen wir registry.tino-ruge.de/intern/mediawiki:1.41.1
Da wir als Basis den Container mediawiki:1.41.1
nehmen und dieser auf dem PHP-Apache-Container läuft, aktivieren wir zuerst die LDAP-PHP-Extension bevor wir der oben verlinkten Anleitung folgen und die Extensions installieren.
Der zweite Befehl wird dementsprechend das Extensions für MediaWiki installieren – und der Dritte der Start von Apache, den ich mir stumpf vom Ursprungscontainer geklaut habe.
Unsere Dockerfile sieht also wie folgt aus:
FROM mediawiki:1.41.1
# Installation von PHP LDAP Extension
RUN apt-get update \
&& apt-get install --yes --no-install-recommends libldap2-dev libpq-dev \
&& docker-php-ext-install ldap \
&& apt-get clean \
&& apt-get autoremove --yes
# Installation der Media-Wiki Extensions
RUN cd /var/www/html/extensions \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPAuthorization \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPAuthentication2 \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPGroups \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPProvider \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LDAPUserInfo \
&& git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/PluggableAuth
# Start von Apache
CMD ["apache2-foreground"]
Code language: PHP (php)
In dem Verzeichnis, in dem das Dockerfile liegt, hauen wir nun folgenden Befehl in die Tasten:
docker build -t registry.tino-ruge.de/intern/mediawiki:1.41.1
Und schon haben haben wir unseren Container mit den benötigten Modulen. Kleiner Profi-Tipp: das Image lässt sich so nun auch auf eine Registry pushen.
Die docker-compose.yml
für Mediawiki und eine Datenbank kann wie folgt aussehen:
version: '3'
services:
mediawiki:
image: registry.tino-ruge.de/intern/mediawiki:1.41.1
restart: always
ports:
- 80:80
links:
- database
volumes:
- /data/wiki/images:/var/www/html/images
- /data/wiki/LocalSettings.php:/var/www/html/LocalSettings.php
- /data/wiki/ldap.json:/var/www/ldap.json
database:
image: mariadb
restart: always
environment:
MYSQL_DATABASE: tr_wiki
MYSQL_USER: tr_wiki
MYSQL_PASSWORD: pffpff
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- /data/wiki/database:/var/lib/mysql
Code language: JavaScript (javascript)
Wenn wir MediaWiki updaten wollen, können wir einfach das 1.14.1 überall durch die neue Version austauschen; zum Beispiel 1.14.2
Das muss dann in dem Dockerfile
, in unserem build
-Befehl und in der docker-compose
erledigt werden.