Flarum Docker image based on Alpine Linux.
If you are interested, check out my other Docker images!
💡 Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!
- Features
- Build locally
- Image
- Environment variables
- Volumes
- Ports
- Usage
- Upgrade
- Notes
- Contributing
- License
- Run as non-root user
- Multi-platform image
- s6-overlay as process supervisor
- msmtpd SMTP relay image to send emails
- Traefik as reverse proxy and creation/renewal of Let's Encrypt certificates (see this template)
git clone https://github.com/crazy-max/docker-flarum.git
cd docker-flarum
# Build image and output to docker (default)
docker buildx bake
# Build multi-platform image
docker buildx bake image-all
Registry | Image |
---|---|
Docker Hub | crazymax/flarum |
GitHub Container Registry | ghcr.io/crazy-max/flarum |
Following platforms for this image are available:
$ docker run --rm mplatform/mquery crazymax/flarum:latest
Image: crazymax/flarum:latest
* Manifest List: Yes
* Supported platforms:
- linux/amd64
- linux/arm/v6
- linux/arm/v7
- linux/arm64
TZ
: The timezone assigned to the container (defaultUTC
)PUID
: Flarum user id (default1000
)PGID
: Flarum group id (default1000
)MEMORY_LIMIT
: PHP memory limit (default256M
)UPLOAD_MAX_SIZE
: Upload max size (default16M
)CLEAR_ENV
: Clear environment in FPM workers (defaultyes
)OPCACHE_MEM_SIZE
: PHP OpCache memory consumption (default128
)LISTEN_IPV6
: Enable IPv6 for Nginx (defaulttrue
)REAL_IP_FROM
: Trusted addresses that are known to send correct replacement addresses (default0.0.0.0/32
)REAL_IP_HEADER
: Request header field whose value will be used to replace the client address (defaultX-Forwarded-For
)LOG_IP_VAR
: Use another variable to retrieve the remote IP address for access log_format on Nginx. (defaultremote_addr
)
FLARUM_DEBUG
: Enables or disables debug mode, used to troubleshoot issues (defaultfalse
)FLARUM_BASE_URL
: The URL to your Flarum installation requiredFLARUM_FORUM_TITLE
: Flarum forum title, only used during first installation (defaultFlarum Dockerized
)FLARUM_API_PATH
: Flarum api path (defaultapi
)FLARUM_ADMIN_PATH
: Flarum admin path (defaultadmin
)FLARUM_POWEREDBY_HEADER
: Set Flarum'sX-Powered-By
header (defaulttrue
)FLARUM_REFERRER_POLICY
: Referrer policy (defaultsame-origin
)
DB_HOST
: MySQL database hostname / IP address requiredDB_PORT
: MySQL database port (default3306
)DB_NAME
: MySQL database name (defaultflarum
)DB_USER
: MySQL user (defaultflarum
)DB_PASSWORD
: MySQL passwordDB_PREFIX
: MySQL database prefix (defaultflarum_
)DB_TIMEOUT
: Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default60
)
💡
DB_USER_FILE
andDB_PASSWORD_FILE
can be used to fill in the value from a file, especially for Docker's secrets feature.
/data
: Contains assets, extensions and storage
⚠️ Note that the volume should be owned by the user/group with the specifiedPUID
andPGID
. If you don't give the volume correct permissions, the container may not start.
8000
: HTTP port
Docker compose is the recommended way to run this image. You can use the following docker compose template, then run the container:
docker-compose up -d
docker-compose logs -f
You can also use the following minimal command:
docker run -d -p 8000:8000 --name flarum \
-v $(pwd)/data:/data \
-e "DB_HOST=db" \
-e "FLARUM_BASE_URL=http://127.0.0.1:8000" \
crazymax/flarum:latest
-e "DB_HOST=db"
⚠️ db
must be a running MySQL instance
You can upgrade Flarum automatically through the UI, it works well. But I recommend to recreate the container whenever I push an update:
docker-compose pull
docker-compose up -d
On first launch, an initial administrator user will be created:
Login | Password |
---|---|
flarum |
flarum |
You can install Flarum extensions from the command line using a specially crafted script with this image:
docker-compose exec flarum extension require <package>
To remove an extension:
docker-compose exec flarum extension remove <package>
To list all extensions:
docker-compose exec flarum extension list
Example with fof/upload
extension:
$ docker-compose exec flarum extension require fof/upload
Using version ^1.0 for fof/upload
./composer.json has been updated
Running composer update fof/upload
Loading composer repositories with package information
Updating dependencies
Lock file operations: 5 installs, 0 updates, 0 removals
- Locking fof/upload (1.0.0)
- Locking guzzlehttp/guzzle (7.3.0)
- Locking guzzlehttp/promises (1.4.1)
- Locking psr/http-client (1.0.1)
- Locking softcreatr/php-mime-detector (3.2.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Downloading softcreatr/php-mime-detector (3.2.0)
- Downloading psr/http-client (1.0.1)
- Downloading guzzlehttp/promises (1.4.1)
- Downloading guzzlehttp/guzzle (7.3.0)
- Downloading fof/upload (1.0.0)
- Installing softcreatr/php-mime-detector (3.2.0): Extracting archive
- Installing psr/http-client (1.0.1): Extracting archive
- Installing guzzlehttp/promises (1.4.1): Extracting archive
- Installing guzzlehttp/guzzle (7.3.0): Extracting archive
- Installing fof/upload (1.0.0): Extracting archive
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
70 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
fof/upload extension added
Clearing the cache...
⚠️ You cannot use Bazaar marketplace extension to install extensions for now.
You can use our SMTP relay msmtpd
service published on port 2500
and declared in our docker-compose.yml
:
Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a Paypal donation to ensure this journey continues indefinitely!
Thanks again for your support, it is much appreciated! 🙏
MIT. See LICENSE
for more details.