Skip to content

yobasystems/alpine-grav

Repository files navigation

Grav container image running on Alpine Linux

Docker Automated build Docker Pulls Docker Stars

Alpine Version Grav Version

This container image (yobasystems/alpine-grav) is based on the minimal Alpine Linux ready for running Grav (Flat file CMS)

Alpine Version 3.23.0 (Released 2025-12-03)

Grav Version 1.7.49.5

Table of Contents

πŸ”οΈ What is Alpine Linux?

Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. Read more about Alpine Linux here and you can see how their mantra fits in right at home with container images.

✨ Features

  • Minimal size only, minimal layers
  • Memory usage is minimal on a simple install.

πŸ—οΈ Architectures

  • :amd64, :x86_64 - 64 bit Intel/AMD (x86_64/amd64)
  • :arm64v8, :aarch64 - 64 bit ARM (ARMv8/aarch64)
  • :arm32v7, :armhf - 32 bit ARM (ARMv7/armhf)

🏷️ Tags

  • :latest latest branch based (Automatic Architecture Selection)
  • :main main branch usually inline with latest
  • :deliver-site deliver-site branch based (Automatic Architecture Selection)
  • :one-page one-page branch based (Automatic Architecture Selection)
  • :amd64, :x86_64 amd64 based on latest tag but amd64 architecture
  • :aarch64, :arm64v8 Armv8 based on latest tag but arm64 architecture
  • :armhf, :arm32v7 Armv7 based on latest tag but arm32 architecture

πŸ“ Layers & Sizes

Version MicroBadger Size (tag)

Version MicroBadger Size (tag)

Version MicroBadger Size (tag)

πŸš€ How to use this image

Environment Variables

  • VIRTUAL_HOST

Creating an instance

mkdir -p /data/{domain}/html

docker run -e VIRTUAL_HOST={domain}.com,www.{domain}.com -v /data/{domain}/html:/usr/html -p 80:80 yobasystems/alpine-grav:latest

E.G

mkdir -p /data/example-com/html

docker run -e VIRTUAL_HOST=example.com -v /data/example-com/html:/usr/html -p 80:80 yobasystems/alpine-grav:latest

Make sure you create the folder on the host before starting the container and obtain the correct permissions.

mkdir -p /data/{domain}/html

docker run -e VIRTUAL_HOST={domain}.com,www.{domain}.com -v /data/{domain}/html:/usr/html -p 80:80 yobasystems/alpine-grav:latest

E.G

mkdir -p /data/example-com/html

docker run -e VIRTUAL_HOST=example.com -v /data/example-com/html:/usr/html -p 80:80 yobasystems/alpine-grav:latest

The following user and group id are used, the files should be set to this: User ID: 101 Group ID: 100

chown -R 100:101 /data/{domain}/html

OR

chown -R 100:101 /data/example-com/html

The container image will auto create the folder and populate with files if it doesn't exist. Make sure to mount /data/{domain}/html with your Backup files.

Volume structure

  • /usr/html: Webroot

GRAV CLI GPM

Grav includes a GPM (Grav Package Manager) which allows you to install, update, uninstall and list all the themes and plugins available on the Grav repository, as well as upgrade Grav itself to the latest version. Its best to su nginx before executing anything or else you can potentially compromise your host.

docker exec -it <container_name> bash
su nginx
cd /usr/html
bin/gpm list

Upload limit

The upload limit is 128 Megabytes.

Change php.ini value

modify files/php-fpm.conf

To modify php.ini variable, simply edit php-fpm.ini and add php_flag[variable] = value.

php_flag[display_errors] = on

PHP Modules

List of available modules in Alpine Linux, not all these are installed.

In order to install a php module do; (leave out the version number i.e. -8.1.01-r0)
docker exec <image_id> apk add <pkg_name>
docker restart <image_name>

Example:

docker exec <image_id> apk add php84-soap
docker restart <image_name>
php84-common
php84-pdo_sqlite
php84-pear
php84-ftp
php84-imap
php84-mysqli
php84-json
php84-mbstring
php84-soap
php84-litespeed
php84-sockets
php84-bcmath
php84-opcache
php84-dom
php84-zlib
php84-gettext
php84-fpm
php84-intl
php84-openssl
php84-session
php84-pdo_mysql
php84-embed
php84-xmlrpc
php84-wddx
php84-dba
php84-ldap
php84-xsl
php84-exif
php84-pdo_dblib
php84-bz2
php84-pdo
php84-pspell
php84-sysvmsg
php84-gmp
php84-apache2
php84-pdo_odbc
php84-shmop
php84-ctype
php84-phpdbg
php84-enchant
php84-sysvsem
php84-sqlite3
php84-odbc
php84-pcntl
php84-calendar
php84-xmlreader
php84-snmp
php84-zip
php84-posix
php84-iconv
php84-curl
php84-doc
php84-gd
php84-xml
php84-dev
php84-cgi
php84-sysvshm
php84-pgsql
php84-tidy
php84-pdo_pgsql
php84-phar
php84-mysqlnd

Docker Compose example:

grav:
  image: yobasystems/alpine-grav:latest
  environment:
    VIRTUAL_HOST: example.com
  expose:
    - "80"
  volumes:
    - /data/example-com/www:/usr/html
  restart: always

πŸ” Image contents & Vulnerability analysis

PACKAGE NAME PACKAGE VERSION VULNERABILITIES

πŸ“š Source Repositories

🐳 Container Registries

πŸ”— Links