Flarum ist eine wunderschöne und moderne Forum-Software. Die Installation per PHP Composer ist jedoch  relativ anspruchsvoll. Packt man Flarum in einen Docker-Container, wird auf einmal alles viel einfacher. Dieser Beitrag zeigt, wie man Flarum unter Docker betreibt:

Flarum dockerized

Flarum benötigt MySQL bzw. MariaDB als Datenbank, was 2 Container im Verbund erfordert:

  1. Flarum samt Apache und PHP
  2. MariaDB

Dazu legen wir zuerst die folgende Verzeichnisstruktur an:

Docker benötigt diese Ordner um Änderungen in Flarum und der Datenbank persistent zu speichern.

Im gleichen Ordner wie unser “docker”-Verzeichnis erstellen wir eine Datei namens docker-compose.yml mit folgendem Inhalt:

# Flarum 1.0.1
#
# Runs Flarum with MariaDB
# Full docs see https://github.com/crazy-max/docker-flarum
#
# Connect:
# http://127.0.0.1:8000
# Usr: flarum
# Pwd: flarum
#
# Add a Flarum extension:
#    docker compose exec flarum extension require <package>
#
# Remove a Flarum extension:
#   docker compose exec flarum extension remove <package>
#
# List Flarum exensions:
#   docker compose exec flarum extension list
#
# Run with 
# docker compose up -d
#
# (c)2021 Harald Schneider
#

version: "3.5"

services:

    # --- MariaDB 10.5
    #
    mysql:
        image: mariadb:10.5
        container_name: flarum_db
        command:
            - "mysqld"
            - "--character-set-server=utf8mb4"
            - "--collation-server=utf8mb4_unicode_ci"
        volumes:
            - "./docker/mysql:/var/lib/mysql"
        ports:
            - '3306:3306'
        environment:
            - "TZ=CEST"
            - "DB_HOST=host.docker.internal"
            - "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
            - "MYSQL_DATABASE=flarum"
            - "MYSQL_USER=flarum"
            - "MYSQL_PASSWORD=YOUR_PASSWORD_HERE"
        restart: unless-stopped

    # --- Flarum 1.0.0 R1 under PHP 7.4.19
    #
    flarum:
        image: crazymax/flarum:latest
        container_name: flarum
        ports:
            - target: 8000
              published: 8000
              protocol: tcp
        depends_on:
            - mysql
        volumes:
            - "./docker/flarum/data:/data"
        environment:
            - "FLARUM_BASE_URL=http://127.0.0.1:8000"
            - "TZ=CEST"
            - "PUID=1000"
            - "PGID=1000"
            - "LISTEN_IPV6=false"
            - "DB_HOST=mysql"
            - "DB_PORT=3306"
            - "DB_NAME=flarum"
            - "DB_USER=flarum"
            - "DB_PASSWORD=YOUR_PASSWORD_HERE"
            - "DB_TIMEOUT=10"
            - "MEMORY_LIMIT=256M"
            - "UPLOAD_MAX_SIZE=16M"
            - "OPCACHE_MEM_SIZE=128"
            - "REAL_IP_FROM=0.0.0.0/32"
            - "REAL_IP_HEADER=X-Forwarded-For"
            - "LOG_IP_VAR=remote_addr"
        restart: unless-stopped

Danach starten wir den Container-Verbund mit

docker compose up -d

und melden uns über die URL http://127.0.0.1:8000 mit Usernamen “flarum” und Passwort “flarum” am Forum an. Beenden können wir das Ganze jederzeit mit

docker compose down

Flarum Extensions im Docker Container managen

Der Container kommt mit einem Script über das wir Flarum Extensions installieren, entfernen und auflisten können. Das Script wird dazu außerhalb von Docker wie folgt aufgerufen:

Eine Flarum Extension installieren:
docker compose exec flarum extension require <package>

Eine Flarum Extension deinstallieren:

docker compose exec flarum extension remove <package>

Alle installierten Flarum Extensions auflisten:

docker compose exec flarum extension list

Viel Spaß mit Docker und Flarum :-)