Sign inSign up

jeromegillard/flarum

By jeromegillard

•Updated over 2 years ago

💬 Docker image of Flarum 1.8.4

Image
4

5.6K

jeromegillard/flarum repository overview

⁠jeromegillard/flarum

⁠Features
  • Lightweight & secure image
  • Based on Alpine Linux 3.16
  • nginx and PHP 8.0
  • Latest Flarum Framework⁠ (v1.8.4)
  • MySQL/Mariadb driver
  • OPCache extension configured
⁠Build-time variables
⁠Ports
  • Default: 8888 (configurable)
⁠Volume
  • /flarum/app/extensions : Flarum extension directory
  • /flarum/app/public/assets : Flarum assets directory
  • /flarum/app/storage/logs : Flarum logs directory
  • /etc/nginx/flarum : Nginx location directory
⁠Environment variables
VariableDescriptionTypeDefault value
UIDFlarum user idoptional991
GIDFlarum group idoptional991
DEBUGFlarum debug modeoptionalfalse
FORUM_URLForum URLrequirednone
DB_HOSTMariaDB instance ip/hostnameoptionalmariadb
DB_USERMariaDB database usernameoptionalflarum
DB_NAMEMariaDB database nameoptionalflarum
DB_PASSMariaDB database passwordrequirednone
DB_PREFFlarum tables prefixoptionalnone
DB_PORTMariaDB database portoptional3306
FLARUM_PORTPort to run Flarum on inside the containeroptional8888
UPLOAD_MAX_SIZEThe maximum size of an uploaded fileoptional50M
PHP_MEMORY_LIMITPHP memory limitoptional128M
OPCACHE_MEMORY_LIMITOPcache memory size in megabytesoptional128
LOG_TO_STDOUTEnable nginx and php error logs to stdoutoptionalfalse
GITHUB_TOKEN_AUTHGithub token to download private extensionsoptionalfalse
PHP_EXTENSIONSInstall additional php extensionsoptionalnone
⁠Required environment variable for first installation
VariableDescriptionTypeDefault value
FLARUM_ADMIN_USERName of your user adminrequirednone
FLARUM_ADMIN_PASSUser admin passwordrequirednone
FLARUM_ADMIN_MAILUser admin adress mailrequirednone
FLARUM_TITLESet a name of your flarumoptionalDocker-Flarum

⁠Installation

⁠1 - Pull flarum image
# Pull from hub.docker.com :
docker pull jeromegillard/flarum:latest

# or build it manually :
docker build -t jeromegillard/flarum:latest https://github.com/jeromegillard/docker-flarum.git

# or build it manually with multi-arch support, and push it to your DockerHub account:
docker buildx build --push --platform linux/amd64,linux/arm64,linux/arm/v7 --tag jeromegillard/flarum:latest --tag jeromegillard/flarum:1.8.4 --tag jeromegillard/flarum:1.8 https://github.com/jeromegillard/docker-flarum.git
⁠2 - Docker-compose.yml
version: "3"

services:
  flarum:
    image: jeromegillard/flarum:latest
    container_name: flarum
    env_file:
      - /mnt/docker/flarum/flarum.env
    volumes:
      - /mnt/docker/flarum/assets:/flarum/app/public/assets
      - /mnt/docker/flarum/extensions:/flarum/app/extensions
      - /mnt/docker/flarum/storage/logs:/flarum/app/storage/logs
      - /mnt/docker/flarum/nginx:/etc/nginx/flarum
    ports:
      - 80:8888
    depends_on:
      mariadb:
        condition: service_healthy

  mariadb:
    image: mariadb:10.5
    container_name: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=xxxxxxxxxx
      - MYSQL_DATABASE=flarum
      - MYSQL_USER=flarum
      - MYSQL_PASSWORD=xxxxxxxxxx
    volumes:
      - /mnt/docker/mysql/db:/var/lib/mysql
    healthcheck:
      test: ["CMD-SHELL", "mysql -u $$MYSQL_USER -p$$MYSQL_PASSWORD -e 'SELECT 1;'"]
      start_period: 10s
      interval: 2s
      timeout: 5s
      retries: 20
⁠3 - Run it

You need a reverse proxy to access flarum, this is not described here. You can use the solution of your choice (Traefik, Nginx, Apache, Haproxy, Caddy, H2O...etc).

Create a environment file

# vi /mnt/docker/flarum/flarum.env

DEBUG=false
FORUM_URL=http://domain.tld

# Database configuration
DB_HOST=mariadb
DB_NAME=flarum
DB_USER=flarum
DB_PASS=xxxxxxxxxx
DB_PREF=flarum_
DB_PORT=3306

# User admin flarum (environment variable for first installation)
# /!\ admin password must contain at least 8 characters /!\
FLARUM_ADMIN_USER=admin
FLARUM_ADMIN_PASS=xxxxxxxxxx
[email protected]
FLARUM_TITLE=Test flarum

Run your docker-compose

docker compose up -d 
  • :warning: Your admin password must contain at least 8 characters (FLARUM_ADMIN_PASS).
  • If you get an error 500 with Something went wrong message, switch the DEBUG environment variable to true to see the actual error message in your browser.

flarum-home

⁠Install additional php extensions
version: "3"

services:
  flarum:
    image: jeromegillard/flarum:latest
    container_name: flarum
    environment:
      - PHP_EXTENSIONS=gmp session brotli
    volumes:
      - /mnt/docker/flarum/assets:/flarum/app/public/assets
      - /mnt/docker/flarum/extensions:/flarum/app/extensions
      - /mnt/docker/flarum/storage/logs:/flarum/app/storage/logs
      - /mnt/docker/flarum/nginx:/etc/nginx/flarum

This example install php8-gmp php8-session and php8-brotli with apk
You can find a php extension here https://pkgs.alpinelinux.org/packages?name=php8-*&branch=v3.13&arch=x86_64⁠

⁠Install custom extensions

Flarum extensions list : https://extiverse.com/⁠

⁠Install an extension
docker exec -ti flarum extension require some/extension
⁠Remove an extension
docker exec -ti flarum extension remove some/extension
⁠List all extensions
docker exec -ti flarum extension list
⁠Custom vhost flarum nginx

File to change the vhost flarum /etc/nginx/flarum/custom-vhost-flarum.conf
To use file custom-vhost-flarum.conf add volume /etc/nginx/flarum Create file in /mnt/docker/flarum/nginx/custom-vhost-flarum.conf

# Example of custom vhost flarum for nginx
# fix nginx issue for fof/sitemap (https://github.com/FriendsOfFlarum/sitemap)

location = /sitemap.xml {
  try_files $uri $uri/ /index.php?$query_string;
}
⁠Custom composer repositories

To use the composer repository system, add your repo name and json representation in /mnt/docker/flarum/extensions/composer.repositories.txt:

my_private_repo|{"type":"path","url":"extensions/*/"}
my_public_repo|{"type":"vcs","url":"https://github.com/my/repo"}

Example for a private repository in github

Add this in /mnt/docker/flarum/extensions/composer.repositories.txt

username|{"type":"vcs","url":"https://github.com/username/my-private-repo"}

Create a token in github with full control of privates repository
https://github.com/settings/tokens⁠

Add your github token in var environment

GITHUB_TOKEN_AUTH=XXXXXXXXXXXXXXX

Add your repo in the list file /mnt/docker/flarum/extensions/list

username/my-private-repo:0.1.0

https://getcomposer.org/doc/03-cli.md#modifying-repositories⁠

⁠Guide for upgrade your flarum container

See the instructions here⁠

⁠License

Docker image jeromegillard/flarum⁠ is released under MIT License⁠.

Docker image mondedie/flarum⁠ is released under MIT License⁠.

The embedded Flarum software⁠ is released under MIT License⁠.

Tag summary

Content type

Image

Digest

sha256:84f313c26…

Size

44 MB

Last updated

over 2 years ago

docker pull jeromegillard/flarum