Docker Image - dsavell/grav

Hello All,

I have been using Grav for a while now, running on my own docker image thought I would share if anyone is interested, please raise issues for features / bugs. I will try my best in spare time to fix anything.

What is dsavell/grav?

A Docker image based on minideb:stretch linux with Grav CMS and PHP7.3/nginx.

Container Information

  • bitnami/minideb:stretch
  • php7.3 + FPM
  • nginx
  • GRAV Core
  • GRAV Admin Plugin

Usage

docker create \
  --name=grav \
  --restart unless-stopped \
  -p 80:80 \
  -e DUID=1000 \
  -e DGID=1000 \
  -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

Tags

[latest, core, 1.6.11, core-1.6.11]

[admin, admin-1.6.11]

[1.6.10, core-1.6.10]

[admin-1.6.10]

[1.6.9, core-1.6.9]

[admin-1.6.9]

Tag usage

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

Tag information

  • latest: GRAV Core
  • admin: GRAV Core + Grav-Admin-Plugin

Parameters

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
-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

User / Group Identifiers

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)

Accessing the application

Access the webui at http://<your-ip>

Using the container

  • Shell Access to container when it is running: docker exec -it grav /bin/bash

Issues

  • N/A.

Changelog

  • 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
    • Converted to minideb for better package management.
    • Updated to PHP 7.3.
    • Better logic to pull latest version when building.
    • Better logging.
    • blog image removed.
    • GRAV Core & GRAV Core + Admin Plugin only images for now.
    • Smaller Docker layering.
    • Fixed nginx configuration thanks to [esapy]
  • 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
1 Like
  • 03/10/2023:
  • Removed cumbersome DevOps steps.
  • Updated GitHub workflows with nodejs 20.x
  • Updated pre-commit hooks.
  • Updated OS from bullseye to bookworm.
  • Updated PHP 7.4 to 8.2.
  • Updated some documentation regarding installation steps.
  • Added ability to install plugins.
  • 24/07/2022:
  • Added moved from master branch to main branch.
  • Added commitlint function to verify proper commit messages.
  • Added .editorconfig to ensure standards across IDE’s.
  • Added .gitattributes to ensure standards across git CLI.
  • Added build to NPM/YARN to locally verify code & commit messages.
  • removed build shell script.
  • Added GitHub Actions CI/CD workflows
    • 1:00am everyday builds.
    • Build on any new change to main branch.
    • Code standards check.
    • Docker lint check.
    • Docker build check.
  • Added prettier codebase formatting.
  • Added pre-commit yaml to validate code syntax / format.
  • Added MIT license.
  • Added pre-commit husky utility to trigger pre-commit & commitlint with prettier for local development.
  • Correct hadolint errors in the Dockerfiles.
  • 18/05/2022:
  • Added subdomain as an option for GRAV_MULTISITE
  • Added NGINX_CLIENT_MAX_BODY_SIZE to specify the nginx config client_max_body_size
  • Updated to Grav 1.7.33
  • 16/10/2021:
  • Updated to Grav 1.7.23
  • Updated curl script in Docker file to correctly pull latest version of grav.
  • Updated to Debian 11.x (bullseye)
  • Changed crontab logic, however it works, just complains in the UI, known bug in admin plugin above.
  • Added check for bin/grav/ scheduler -i to startup output.
  • Added check for crontab -l to startup output.
  • 15/04/2021:
  • Updated to Grav 1.7.12
  • Added nano text editor to the image.
  • 10/04/2021:
  • Updated to Grav 1.7.10
  • Updated to PHP 7.4.x
  • Fix permissions on startup because of topic names with whitespaces.
  • Added support for multisite subdirectory.
  • Fixed uploading to the CMS using a tmp directory this is now /var/www/grav/tmp.
  • 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:
  • Fix permissions for cron & GRAV Scheduler.
  • 12/04/2020:
  • Updated to Grav 1.6.23
  • 20/02/2020:
  • Updated to Grav 1.6.21
  • 09/12/2019:
  • Fixed missing php7.3-mbstring on admin tag.
  • 08/12/2019:
  • Updated to Grav 1.6.19
  • Fixed crontab schedules.
  • 30/11/2019:
  • Updated baseimage from stretch to buster.
  • Added cron & added cronjob allows jobs to be run on a periodic basic, GRAV relies on this.
  • Added php7.3-intl for Multilang support for twig tools.
  • Enabled caching in Nginx for tools that analyze speed performance (like gtmetrix)
  • Startup scripts now enable cron.
  • 15/11/2019:
  • Fixed working directory this is now set to /var/ww/grav, now commands like bin/grav & bin/gpm can be used directly.
  • 10/08/2019:
  • Fixed GRAV user directory being overwritten when rebuilding container.
1 Like