From 8a363e7d92a86f0a04b5400ef9fe848b26371a69 Mon Sep 17 00:00:00 2001 From: Achton Smidt Winther Date: Sat, 4 Apr 2026 22:53:48 +0200 Subject: [PATCH 1/2] Add Flarum 2.0 support - Bump FLARUM_VERSION to v2.0.0-beta.8 - Add --stability=beta and -W flags for Composer 2.x dependency resolution - Add DB_DRIVER env var (default: mysql) for Flarum 2.x MariaDB driver support - Update MariaDB to 11.x and fix mysqld -> mariadbd command in all compose files - Add -W flag to runtime extension install for 2.x compatibility Refs #143 Co-Authored-By: Claude Opus 4.6 (1M context) --- Dockerfile | 6 +++--- examples/compose/compose.yml | 5 +++-- examples/subfolder/compose.yml | 5 +++-- examples/traefik/compose.yml | 5 +++-- rootfs/etc/cont-init.d/03-config.sh | 7 ++++--- test/compose.yml | 5 +++-- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 653692f..575f213 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -ARG FLARUM_VERSION=v1.8.10 +ARG FLARUM_VERSION=v2.0.0-beta.8 ARG ALPINE_VERSION=3.22 FROM tianon/gosu:latest AS gosu @@ -55,8 +55,8 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2"\ ARG FLARUM_VERSION RUN mkdir -p /opt/flarum \ && curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \ - && COMPOSER_CACHE_DIR="/tmp" composer create-project flarum/flarum /opt/flarum --no-install \ - && COMPOSER_CACHE_DIR="/tmp" composer require --working-dir /opt/flarum flarum/core:${FLARUM_VERSION} \ + && COMPOSER_CACHE_DIR="/tmp" composer create-project flarum/flarum /opt/flarum --stability=beta --no-install \ + && COMPOSER_CACHE_DIR="/tmp" composer require --working-dir /opt/flarum -W flarum/core:${FLARUM_VERSION} \ && composer clear-cache \ && addgroup -g ${PGID} flarum \ && adduser -D -h /opt/flarum -u ${PUID} -G flarum -s /bin/sh -D flarum \ diff --git a/examples/compose/compose.yml b/examples/compose/compose.yml index 49601b8..9ac1bbe 100644 --- a/examples/compose/compose.yml +++ b/examples/compose/compose.yml @@ -2,10 +2,10 @@ name: flarum services: db: - image: mariadb:10 + image: mariadb:11 container_name: flarum_db command: - - "mysqld" + - "mariadbd" - "--character-set-server=utf8mb4" - "--collation-server=utf8mb4_unicode_ci" volumes: @@ -44,6 +44,7 @@ services: - "PUID" - "PGID" - "DB_HOST=db" + - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/examples/subfolder/compose.yml b/examples/subfolder/compose.yml index 08b261d..d47d5d5 100644 --- a/examples/subfolder/compose.yml +++ b/examples/subfolder/compose.yml @@ -36,10 +36,10 @@ services: restart: always db: - image: mariadb:10 + image: mariadb:11 container_name: flarum_db command: - - "mysqld" + - "mariadbd" - "--character-set-server=utf8mb4" - "--collation-server=utf8mb4_unicode_ci" volumes: @@ -84,6 +84,7 @@ services: - "PUID" - "PGID" - "DB_HOST=db" + - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/examples/traefik/compose.yml b/examples/traefik/compose.yml index 1985240..a0b916c 100644 --- a/examples/traefik/compose.yml +++ b/examples/traefik/compose.yml @@ -36,10 +36,10 @@ services: restart: always db: - image: mariadb:10 + image: mariadb:11 container_name: flarum_db command: - - "mysqld" + - "mariadbd" - "--character-set-server=utf8mb4" - "--collation-server=utf8mb4_unicode_ci" volumes: @@ -86,6 +86,7 @@ services: - "PUID" - "PGID" - "DB_HOST=db" + - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index c990caa..dabcc60 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -60,6 +60,7 @@ DB_NAME=${DB_NAME:-flarum} DB_USER=${DB_USER:-flarum} #DB_PASSWORD=${DB_PASSWORD:-asupersecretpassword} DB_PREFIX=${DB_PREFIX:-flarum_} +DB_DRIVER=${DB_DRIVER:-mysql} DB_NOPREFIX=${DB_NOPREFIX:-false} DB_TIMEOUT=${DB_TIMEOUT:-60} @@ -151,7 +152,7 @@ if [ "${counttables}" -eq "0" ]; then debug: ${FLARUM_DEBUG} baseUrl: ${FLARUM_BASE_URL} databaseConfiguration: - driver: mysql + driver: ${DB_DRIVER} host: ${DB_HOST} database: ${DB_NAME} username: ${DB_USER} @@ -180,7 +181,7 @@ gosu flarum:flarum cat >/opt/flarum/config.php < ${FLARUM_DEBUG}, 'database' => array ( - 'driver' => 'mysql', + 'driver' => '${DB_DRIVER}', 'host' => '${DB_HOST}', 'port' => ${DB_PORT}, 'database' => '${DB_NAME}', @@ -217,7 +218,7 @@ if [ -s "/data/extensions/list" ]; then extensions="${extensions}${extension} " done Date: Sat, 4 Apr 2026 23:00:21 +0200 Subject: [PATCH 2/2] Auto-detect database driver from server version Replace the DB_DRIVER env var with auto-detection by querying SELECT VERSION() after connecting. MariaDB includes "MariaDB" in the version string, MySQL does not. This sets the correct Laravel database driver in config.php without user configuration. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/compose/compose.yml | 1 - examples/subfolder/compose.yml | 1 - examples/traefik/compose.yml | 1 - rootfs/etc/cont-init.d/03-config.sh | 10 +++++++++- test/compose.yml | 1 - 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/compose/compose.yml b/examples/compose/compose.yml index 9ac1bbe..b010920 100644 --- a/examples/compose/compose.yml +++ b/examples/compose/compose.yml @@ -44,7 +44,6 @@ services: - "PUID" - "PGID" - "DB_HOST=db" - - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/examples/subfolder/compose.yml b/examples/subfolder/compose.yml index d47d5d5..9d0edbb 100644 --- a/examples/subfolder/compose.yml +++ b/examples/subfolder/compose.yml @@ -84,7 +84,6 @@ services: - "PUID" - "PGID" - "DB_HOST=db" - - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/examples/traefik/compose.yml b/examples/traefik/compose.yml index a0b916c..bc47a25 100644 --- a/examples/traefik/compose.yml +++ b/examples/traefik/compose.yml @@ -86,7 +86,6 @@ services: - "PUID" - "PGID" - "DB_HOST=db" - - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index dabcc60..47e82af 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -60,7 +60,6 @@ DB_NAME=${DB_NAME:-flarum} DB_USER=${DB_USER:-flarum} #DB_PASSWORD=${DB_PASSWORD:-asupersecretpassword} DB_PREFIX=${DB_PREFIX:-flarum_} -DB_DRIVER=${DB_DRIVER:-mysql} DB_NOPREFIX=${DB_NOPREFIX:-false} DB_TIMEOUT=${DB_TIMEOUT:-60} @@ -139,6 +138,15 @@ while ! ${dbcmd} -e "show databases;" >/dev/null 2>&1; do fi done echo "Database ready!" + +# Auto-detect database driver from server version +DB_DRIVER="mysql" +SERVER_VERSION=$(${dbcmd} -N -s -e "SELECT VERSION();" 2>/dev/null) +if echo "$SERVER_VERSION" | grep -qi "mariadb"; then + DB_DRIVER="mariadb" +fi +echo "Detected database driver: ${DB_DRIVER} (${SERVER_VERSION})" + counttables=$(echo 'SHOW TABLES' | ${dbcmd} "$DB_NAME" | wc -l) # Enforce no prefix for db diff --git a/test/compose.yml b/test/compose.yml index cf66b7d..7045f1c 100644 --- a/test/compose.yml +++ b/test/compose.yml @@ -34,7 +34,6 @@ services: - "PUID" - "PGID" - "DB_HOST=db" - - "DB_DRIVER=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}"