Huge thanks to mondedie/flarum for creating base docker image.
- latest (Dockerfile)
- Multi-platform image:
linux/386
,linux/amd64
,linux/arm/v6
,linux/arm/v7
,linux/arm64
- Lightweight & secure image
- Based on Alpine Linux 3.18
- nginx and PHP 8.2
- Latest Flarum Framework (v1.8.5)
- MySQL/Mariadb driver
- OPCache extension configured
- VERSION = Version of flarum/flarum skeleton (default: v1.8.5)
- Default: 8888 (configurable)
- /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
Variable | Description | Type | Default value |
---|---|---|---|
UID | Flarum user id | optional | 991 |
GID | Flarum group id | optional | 991 |
DEBUG | Flarum debug mode | optional | false |
FORUM_URL | Forum URL | required | none |
DB_HOST | MariaDB instance ip/hostname | optional | mariadb |
DB_USER | MariaDB database username | optional | flarum |
DB_NAME | MariaDB database name | optional | flarum |
DB_PASS | MariaDB database password | required | none |
DB_PREF | Flarum tables prefix | optional | none |
DB_PORT | MariaDB database port | optional | 3306 |
FLARUM_PORT | Port to run Flarum on inside the container | optional | 8888 |
UPLOAD_MAX_SIZE | The maximum size of an uploaded file | optional | 50M |
PHP_MEMORY_LIMIT | PHP memory limit | optional | 128M |
OPCACHE_MEMORY_LIMIT | OPcache memory size in megabytes | optional | 128 |
LOG_TO_STDOUT | Enable nginx and php error logs to stdout | optional | false |
GITHUB_TOKEN_AUTH | Github token to download private extensions | optional | false |
PHP_EXTENSIONS | Install additional php extensions | optional | none |
Variable | Description | Type | Default value |
---|---|---|---|
FLARUM_ADMIN_USER | Name of your user admin | required | none |
FLARUM_ADMIN_PASS | User admin password | required | none |
FLARUM_ADMIN_MAIL | User admin adress mail | required | none |
FLARUM_TITLE | Set a name of your flarum | optional | Docker-Flarum |
# Pull from hub.docker.com :
docker pull ghcr.io/rikodev/flarum-docker:latest
# or build it manually :
docker build -t rikodev/flarum-docker:latest https://github.com/rikodev/flarum-docker.git
version: "3"
services:
flarum:
image: ghcr.io/rikodev/flarum-docker: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
mariadb:
image: mariadb:10.6
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
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 (see docker-compose: /mnt/docker/flarum/flarum.env here)
# 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
FLARUM_ADMIN_MAIL=admin@domain.tld
FLARUM_TITLE=Test flarum
Run your docker-compose
docker-compose up -d mariadb
# Wait a moment for the creation of the database
docker-compose up -d flarum
⚠️ 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 totrue
to see the actual error message in your browser.
version: "3"
services:
flarum:
image: ghcr.io/rikodev/flarum-docker: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 php82-gmp php82-session and php82-brotli with apk
You can find a php extension here https://pkgs.alpinelinux.org/packages?name=php8-*&branch=v3.13&arch=x86_64
Flarum extensions list: https://extiverse.com/
docker exec -ti flarum extension require some/extension
docker exec -ti flarum extension remove some/extension
docker exec -ti flarum extension list
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;
}
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
See the instructions here
Docker image rikodev/flarum-docker is released under MIT License.
The embedded Flarum software is released under MIT License.