Flarum is an open source forum web application written in PHP (Laravel) and JavaScript (Mithril).
This is a Docker image for the development version of Flarum, which can be used as is to try out the application, or which can be adapted to contribute to Flarum.
Once you run the image, the Flarum application will be made available at http://flarum.dev, which means that flarum.dev
needs to point to the IP address that the container is published at.
Assuming that the container is published at the IP address 127.0.0.1 (i.e. localhost
, see the note below for more information on IP addresses), then you need to add this line to your hosts file (/etc/hosts
on Linux and OS X, %SystemRoot%\System32\drivers\etc\hosts
on Windows):
127.0.0.1 flarum.dev
Note — To configure and/or find out the IP address of a VM-hosted Docker installation, see https://docs.docker.com/installation/windows/ (Windows) and https://docs.docker.com/installation/mac/ (OS X) for guidance if using Boot2Docker. If you're using Vagrant, you'll need to set up port forwarding (see https://docs.vagrantup.com/v2/networking/forwarded_ports.html.
TMI — The front end's URL is hardcoded as http://flarum.dev
and the back end's URL is hardcoded as http://flarum.dev/api
. Forcing the front and the back end to have the same hardcoded hostname requires an extra step to make the hostname resolvable, but it is an easy way to comply with the same-origin policy in a development environment.
Run with:
docker run -p 80:80 sebp/flarum
Alternatively, if you're using Docker Compose, use an entry such as this one in your docker-compose.yml
file:
flarum:
image: sebp/flarum
ports:
- "80:80"
and run with:
docker-compose up flarum
To make the image consistently rebuildable by Docker (and thus avoid issues when major things change in the source code), the build process checks out a specific commit of the flarum/flarum source code rather than the latest commit.
Two additional workarounds are needed to make that version work:
- As it stands, the flarum/flarum repository uses a specific commit of the flarum/core repository as a submodule... but this commit has a major bug (preventing posts from being displayed) that was corrected in a later commit, so the build process checks out a later (and working) commit of flarum/core.
- The build process can't complete due to a missing
extensions_enabled
entry in theconfig
table of theflarum
database (attempting to fetch it leads to aforeach (NULL as $extension)
situation which doesn't end well and is a known open issue at the time of writing). The build process therefore 'manually' inserts the missing entry in the database (an alternative workaround that doesn't involve fiddling with the database is to add'extensions_enabled => '[]'
to the$config
array in flarum/core's/src/Core/Seeders/ConfigTableSeeder.php
).
Written by Sébastien Pujadas, released under the MIT license.