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/mysqlCode 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.

Kategorien:DockerPHP