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:
We utilise the docker manifest for multi-platform awareness. More information is available from docker here.
Simply pulling dsavell/grav:admin
should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
Architecture | Available | Tag |
---|---|---|
x86-64 | ✅ | amd64-\<version tag> |
arm64 | ❌ | arm64v8-\<version tag> |
armhf | ❌ | arm32v7-\<version tag> |
This image provides various versions that are available via tags.
Tag | Available | Description |
---|---|---|
admin | ✅ | Stable Grav Core + Admin plugin releases |
core | ✅ | Stabe Grav Core releases |
admin-\<date> | ✅ | Stable Grav Core + Admin plugin releases + date |
core-\<date> | ✅ | Stabe Grav Core releases + date |
admin-\<version tag> | ✅ | Pinned Grav Core + Admin plugin releases |
core-\<version tag> | ✅ | Pinned Grav Core releases |
admin-\<version tag>-\<date> | ✅ | Pinned Grav Core + Admin plugin releases + date |
core-\<version tag>-\<date> | ✅ | Pinned Grav Core releases + date |
WebUI can be found at http://<your-ip>
More information can be found on the official documentation here
Here are some example snippets to help you get started creating a container.
---
version: '2.1'
services:
grav:
image: dsavell/grav:<TAG>
container_name: grav
restart: unless-stopped
environment:
- DUID=1000
- DGID=1000
- TZ=Europe/London # optional
- GRAV_MULTISITE=subdirectory # optional
- ROBOTS_DISALLOW=false # optional
- GRAV_PLUGINS=devtools,precache # optional
volumes:
- /data/containers/grav/backup:/var/www/grav/backup
- /data/containers/grav/logs:/var/www/grav/log
- /data/containers/grav/user:/var/www/grav/user
ports:
- 80:80
docker create \
--name=grav \
--restart unless-stopped \
-e DUID=1000 \
-e DGID=1000 \
-p 80:80 \
-e TZ=Europe/London `# optional` \
-e GRAV_MULTISITE=subdirectory `# optional` \
-e ROBOTS_DISALLOW=false `# optional` \
-e GRAV_PLUGINS=devtools,precache `# optional` \
-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:<TAG>
docker start grav
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 webUI |
-e DUID=1000 |
for UserID - see below for explanation |
-e DGID=1000 |
for GroupID - see below for explanation |
-e TZ-e GRAV_MULTISITE=subdirectory |
Deploy a Grav multisite (subdirectory) installation. |
-e ROBOTS_DISALLOW=false |
Replace default /robots.txt file with one discouraging indexers. |
-e TZ=Europe/London |
Set your timezone |
-e GRAV_PLUGINS=devtools,precache |
Install extra plugins automaticall (must be comma separated) |
-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 PUID
and group PGID
.
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 PUID=1000
and PGID=1000
, to find yours use id user
as below:
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
https://github.com/getgrav/grav-plugin-admin/issues/1744
master branch
to main
branch.commitlint
function to verify proper commit messages..editorconfig
to ensure standards across IDE's..gitattributes
to ensure standards across git CLI.subdomain
as an option for GRAV_MULTISITE
NGINX_CLIENT_MAX_BODY_SIZE
to specify the nginx config client_max_body_sizebin/grav/ scheduler -i
to startup output.crontab -l
to startup output.