InspIRCd Docker mit MySQL

Das Standard-Image von InspIRCd hat keine Unterstützung für MySQL, weil das Modul nicht kompiliert wird. Dies merkt man hauptsächlich daran, dass bei der Benutzung von sqlauth die Datenbank nicht bereit ist, bzw. das Modul nicht geladen werden kann:
Module file could not be found: m_mysql.so
ANNOUNCEMENT: Forbidden connection from xxxx (SQL database not present)
Generell konfiguriert sich das Authentifizierung-Backend wie in der Dokumentation erklärt:
Konfiguration von MySQL Auth
# File: config/modules.conf
<module name="mysql">
# id muss eindeutig sein, mehrere Verbindungen möglich
<database module="mysql" name="inspircd" user="inspircd" pass="my_password" host="127.0.0.1" id="sqlauth">
# dbid muss der id von database entsprechen (siehe oben)
<sqlauth allowpattern="Guest*"
column="pass"
dbid="sqlauth"
killreason="Access denied"
query="SELECT * FROM auth WHERE name='$nick' LIMIT 1"
verbose="no">
MySQL Modul nachrüsten
Leider kann man das offizielle Image nicht zum Nachrüsten verwenden, weil dieses keine Build-Files enthält und nur die kompilierten Dateien enthält.
Man muss hier also das Docker-Projekt verwenden und das Bauen der Module ergänzen:
git clone https://github.com/inspircd/inspircd-docker.git
cd inspircd-docker
docker build . \
--build-arg CONFIGUREARGS="--enable-extras mysql --enable-extras regex_pcre" \
--build-arg BUILD_DEPENDENCIES="mariadb-dev pcre-dev" \
--build-arg RUN_DEPENDENCIES="mariadb-connector-c" \
-t inspircd:with-mysql
- CONFIGUREARGS
zusätzliche Parameter für das configure. In diesem fall werden die Module mysql und regex_pcre für das Kompilieren vorgemerkt. - BUILD_DEPENDENCIES
Abhängigkeiten für das Kompilieren werden hier angegeben. Diese werden im Alpine Build Image installiert (apk add ...). Hier müssen die DEV-Pakete angegeben werden! Im Endgültigen Image sind diese dann nicht mehr enthalten. - RUN_DEPENDENCIES
Abhängigkeiten die im "produktiven" Image für das Ausführen notwendig sind. Dies sind im Regelfall nicht die DEV-Pakete, sondern Bibliotheken wie mariadb-connector-c. Diese stellt zum Beispiel die Datei (/usr/lib/libmariadb.so.3) bereit, die vom MySQL-Modul benötigt wird.
Nach dem Bau des Images ist dieses lokal verfügbar:
docker run inspircd:with-mysql ...
Links
Alpine Paketsuche
https://pkgs.alpinelinux.org/contents?branch=edge&name=mariadb-connector-c&arch=x86&repo=main
InspIRCd Dokumentation
https://docs.inspircd.org/
InspIRCd Docker Github Projekt
https://github.com/inspircd/inspircd-docker