Grav is a Fast, Simple, and Flexible file-based Web-platform. There is Zero installation required. Although Grav follows principles similar to other flat-file CMS platforms, it has a different design philosophy than most.
The underlying architecture of Grav is built using well established and best-in-class technologies. This is to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
- Twig Templating: for powerful control of the user interface
- Markdown: for easy content creation
- YAML: for simple configuration
- Parsedown: for fast Markdown and Markdown Extra support
- Doctrine Cache: for performance
- Pimple Dependency Injection Container: for extensibility and maintainability
- Symfony Event Dispatcher: for plugin event handling
- Symfony Console: for CLI interface
- Gregwar Image Library: for dynamic image manipulation
A Docker image based on minideb:buster linux with Grav CMS and PHP7.4/nginx.
- bitnami/minideb:buster
- php7.4 + FPM
- nginx
- GRAV Core
- GRAV Admin Plugin
- optional multisite installation using subdirectories
docker create \
--name=grav \
--restart unless-stopped \
-p 80:80 \
-e DUID=1000 \
-e DGID=1000 \
-e GRAV_MULTISITE=subdirectory \
-v /data/containers/grav/backup:/var/www/grav/backup \
-v /data/containers/grav/logs:/var/www/grav/logs \
-v /data/containers/grav/user:/var/www/grav/user \
dsavell/grav
docker start grav
latest, core, 1.6.31, core-1.6.31 (Dockerfile)
admin, admin-1.6.31 (Dockerfile)
You can choose between ,using tags, no tag is required for grav default installation.
Add one of the tags, if required:
- Example: dsavell/grav:admin
- latest: GRAV Core
- admin: GRAV Core + Grav-Admin-Plugin
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal>
respectively. For example, -p 8080:80
would expose port 80
from inside the container to be accessible from the host's IP on port 8080
outside the container.
Parameter | Function |
---|---|
-p 80 |
http |
-e DUID=1000 |
for UserID - see below for explanation |
-e DGID=1000 |
for GroupID - see below for explanation |
-e GRAV_MULTISITE=subdirectory |
Deploy a Grav multisite (subdirectory) installation |
-v /var/www/backup |
Contains your location for Grav backups |
-v /var/www/logs |
Contains your location for your Grav log files |
-v /var/www/user |
Contains your Grav content |
When using volumes (-v
flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user DUID
and group DGID
.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance DUID=1000
and DGID=1000
, to find yours use id user
as below:
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
Access the webui at http://<your-ip>
, for more information check out GRAV
- Shell Access to container when it is running:
docker exec -it grav /bin/bash
- To monitor the logs of the container in realtime:
docker logs -f grav
- N/A.
- UNRELEASED:
- 11/10/2020:
- Updated to Grav 1.6.28
- 02/08/2020:
- Updated to Grav 1.6.26
- 01/06/2020:
- Updated to Grav 1.6.25
- 22/04/2020:
- 12/04/2020:
- Updated to Grav 1.6.23
- 20/02/2020:
- Updated to Grav 1.6.21
- 09/12/2019:
- 08/12/2019:
- Updated to Grav 1.6.19
- Fixed crontab schedules. Thanks to coldestheart #11
- 30/11/2019:
- Updated baseimage from stretch to buster. Thanks to coldestheart #10
- Added cron & added cronjob allows jobs to be run on a periodic basic, GRAV relies on this. Thanks to coldestheart #10
- Added php7.3-intl for Multilang support for twig tools. Thanks to coldestheart #10
- Enabled caching in Nginx for tools that analyze speed performance (like gtmetrix) Thanks to coldestheart #10
- Startup scripts now enable cron. Thanks to coldestheart #10
- 15/11/2019:
- 10/08/2019:
- 18/06/2019: The Better Release?
- Better File/Volume control
- Better tagging / versioning of GRAV Core.
- Better User/Group management.
- Better Documentation.
- 10/06/2019: The Refactor Release
- 10/04/2018: The Volume Release
- The /var/www volume can now be mounted.
- 02/01/2018: The 2018 Release
- Improved Code
- Now using github API to pull latest GRAV release
- 27/07/2017: The Automated Release
- Updated tag "blog" to now use github API to download latest Blog-Skeleton zip file
- Improved code on all tags
- Typo corrections on the README.md
- 29/06/2017: The Blog Release
- added tag blog This is a skeleton of Blog-Skeleton
- 28/06/2017: The Even Smaller Release
- Now uses image from ej52/alpine-nginx-php
- Size has reduced from 657 to 267mb & with admin plugin 277mb
- 22/06/2017: The Better Release
- Now uses image from php:7.0-apache
- Size has reduced from 1.2gb to 657mb & with admin plugin 682mb
- Corrected GRAV permissions
- Less packages installed during Docker build + cleanup
- 21/06/2017: Initial Release
- First Initial Release
- No Optimization
- Full Operating System of centos used
- No Custom Features