Flarum Docker image
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):
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.
docker run -p 80:80 sebp/flarum
Alternatively, if you're using Docker Compose, use an entry such as this one in your
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_enabledentry in the
configtable of the
flarumdatabase (attempting to fetch it leads to a
foreach (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
$configarray in flarum/core's