No description
Find a file
Matthew Baggett 454f212bab
Some checks failed
Build / Build (push) Failing after 8m59s
tomcat 7&8 deprecated by apache foundation
2026-04-08 14:14:56 +02:00
.github/workflows Add named labels to docker login steps. [no ci] 2026-04-08 14:00:16 +02:00
.trunk Add opinionated configs 2026-04-08 13:26:05 +02:00
fs Dotnet container 2025-12-12 14:45:44 +01:00
.common.sh Should still be quiet 2025-12-12 15:49:54 +01:00
.gitignore Fixup workflow 2025-06-03 22:43:58 +02:00
.gitmodules Add opinionated configs 2026-04-08 13:26:05 +02:00
Alpine.Dockerfile Add alpine 3.23 2025-12-12 11:43:25 +01:00
Alpine.fragment.Dockerfile Fix regressed names. 2026-04-02 16:39:34 +02:00
bake Formatting 2025-06-05 00:45:46 +02:00
docker-bake.hcl add docker hub mirror. 2026-04-08 13:08:16 +02:00
Dotnet.Dockerfile Dotnet container 2025-12-12 14:45:44 +01:00
Dotnet.fragment.Dockerfile Dotnet container 2025-12-12 14:45:44 +01:00
Java.Dockerfile update tomcat version. 2026-04-08 14:01:47 +02:00
Java.fragment.Dockerfile Fix regressed names. 2026-04-02 16:39:34 +02:00
Java.Tomcat.fragment.Dockerfile Tomcat-related schenanigans. 2026-04-02 17:07:08 +02:00
Java.War.fragment.Dockerfile Apply DRY to docker-bake. Add java:war and java:tomcat images. 2025-06-11 23:29:25 +02:00
Magento.Dockerfile Add php 8.2 & 8.3 builds. 2025-08-03 17:01:08 +02:00
Magento.fragment.Dockerfile Fix regressed names. 2026-04-02 16:39:34 +02:00
Node.Dockerfile Node container 2025-12-12 14:46:03 +01:00
Node.fragment.Dockerfile Node container 2025-12-12 14:46:03 +01:00
PHP-Node.fragment.Dockerfile Fix regressed names. 2026-04-02 16:39:34 +02:00
PHP.Dockerfile PHP 8.5 + Node 24 2025-12-12 15:35:59 +01:00
PHP.fragment.Dockerfile Fix regressed names. 2026-04-02 16:39:34 +02:00
README.md Tomcat-related schenanigans. 2026-04-02 17:07:08 +02:00
test Should still be quiet 2025-12-12 15:49:54 +01:00
test-healthchecks.yml PHP 8.5 + Node 24 2025-12-12 15:35:59 +01:00
test-versions-assertions.yml PHP 8.5 + Node 24 2025-12-12 15:35:59 +01:00
test.yml tomcat 7&8 deprecated by apache foundation 2026-04-08 14:14:56 +02:00
TODO.md various bits of magento fiddling 2025-06-17 15:41:50 +02:00

Base Images

  • Base Image
  • PHP
  • Magento

Build everything:

# Fundimentally, this is all it takes:
docker buildx bake --provenance=false --push --progress=plain

# But we have some test wrappers to automatically test and push
./test && ./bake

Architecture of the Containers

Architecture

Based on runit. It runs multiple processes internally, and monitors them. In the /etc/services.d/ directory you'll find the following services at time of writing:

  • alpine-*-base: Base image
    • /etc/services.d/logs/: Log service, which collects logs from the other services and writes them to files.
      • Setting the envvar LOG_PATHS to a space-seperated list of paths will make the log service collect logs from those paths and write them to stdout.
    • /etc/services.d/splash/: Splash service, which is a simple web server that serves the splash page.
    • /etc/services.d/cron/: Cron service.
  • php-*-base: PHP flavoured base image
    • /etc/services.d/nginx/: Nginx service.
    • /etc/services.d/php/: PHP-FPM service, which runs the PHP application itself.
  • php-*-node-base: PHP flavoured base image with Node.js support
    • /etc/services.d/npm-babysitter/: Monitors permissions on the node cache directories and fixes them if they change.
    • /etc/services.d/npm-watcher/:
      • Similar to the logs service, setting the envvar NPM_WATCH_PATHS will make the npm watcher run npm run watch in those paths.
      • [ WARNING ]: This is currently busted.
  • magento-*-base: Magento flavoured base image
    • /etc/services.d/magento/: Magento service, which runs the Magento application.
      • Fixes cache permissions, and runs any scripts loaded into /etc/services.d/magento/tasks.d/ to get your Magento application going and touches /etc/services.d/magento/done upon completion.
  • java-*-base: Java flavoured base image
  • java-war-machine-*-base: Java War Machine flavoured base image
    • /etc/services.d/java/: Java service runner, which runs any .war files placed into /app

Each directory contains a run script that starts the service. The run script is executed by runit when the container starts. If the run script exits, runit will restart it, unless there is a finish script. The finish script will get the exit code of run as its $1 argument. The finish script can decide to sleep forever or exit to restart the service. More can be read in the runit documentation particularly runsv and runsvdir

Configurable Options

Environment Variable Affected Images Default Options Description
MAGENTO_MODE magento developer developer or production The mode in which Magento will run.
NPM_WATCH_PATHS php-node+ "" Space seperated paths. Paths to watch for changes. The paths to watch for changes using npm run watch in the application.
PHP_MEMORY_LIMIT php+ 256M 256M, 2G etc The memory limit for PHP scripts.
PHP_CLI_MEMORY_LIMIT php+ 4G 256M, 2G etc The memory limit for PHP CLI scripts.
PHP_DEBUG_MODE php+ null on Enable or disable debug mode.
PHP_ERROR_REPORTING php+ E_ALL if PHP_DEBUG_MODE is on. E_ERROR otherwise. Expressions from error_reporting override error_reporting level.
PHP_DISPLAY_ERRORS php+ on when PHP_DEBUG_MODE is on. off otherwise on or off Enable or disable display errors.
PHP_ENABLE_XDEBUG php+ null on or off Enable or disable Xdebug. Is influenced by PHP_ERROR_REPORTING.
WAR_FILE java-war-machine null Path to a .war file. An explicit path to the .war file to run. Will be autodetected if not present. Only neccisary if executable name is ambiguous.
NTP_SERVER base+ 0.pool.ntp.org Any valid NTP server address The NTP server to use for time synchronization.
LOG_PATHS base+ ``, overridden by php base image etc. Space seperated paths. Paths to collect logs from. The paths of files to collect logs from and write them to stdout.

Versions available

Container Is :latest Version Alpine Tag
Magento PHP 8.4, Node 22 Alpine 3.22 git.grey.ooo/grey.ooo/docker/magento:8.4
Magento ✔️ PHP 8.1, Node 18 Alpine 3.18 git.grey.ooo/grey.ooo/docker/magento:8.1
PHP+Node ✔️ PHP 8.5, Node 24 Alpine 3.23 git.grey.ooo/grey.ooo/docker/php-node:8.5
PHP+Node PHP 8.4, Node 22 Alpine 3.22 git.grey.ooo/grey.ooo/docker/php-node:8.4
PHP+Node PHP 8.3, Node 22 Alpine 3.22 git.grey.ooo/grey.ooo/docker/php-node:8.3
PHP+Node PHP 8.2, Node 22 Alpine 3.21 git.grey.ooo/grey.ooo/docker/php-node:8.2
PHP+Node PHP 8.1, Node 18 Alpine 3.18 git.grey.ooo/grey.ooo/docker/php-node:8.1
PHP+Node PHP 7.4, Node 16 Alpine 3.15 git.grey.ooo/grey.ooo/docker/php-node:7.4
PHP ✔️ PHP 8.5 Alpine 3.23 git.grey.ooo/grey.ooo/docker/php:8.5
PHP PHP 8.4 Alpine 3.22 git.grey.ooo/grey.ooo/docker/php:8.4
PHP PHP 8.3 Alpine 3.22 git.grey.ooo/grey.ooo/docker/php:8.3
PHP PHP 8.2 Alpine 3.21 git.grey.ooo/grey.ooo/docker/php:8.2
PHP PHP 8.1 Alpine 3.18 git.grey.ooo/grey.ooo/docker/php:8.1
PHP PHP 7.4 Alpine 3.15 git.grey.ooo/grey.ooo/docker/php:7.4
Node ✔️ Node 24 Alpine 3.23 git.grey.ooo/grey.ooo/docker/node:24
Node Node 22 Alpine 3.21 git.grey.ooo/grey.ooo/docker/node:22
Java ✔️ OpenJDK 21 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:21
Java OpenJDK 17 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:17
Java OpenJDK 11 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:11
Java OpenJDK 8 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:8
Java War Machine OpenJDK 21 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:war-machine-21
Java War Machine OpenJDK 17 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:war-machine-17
Java War Machine OpenJDK 11 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:war-machine-11
Java Tomcat OpenJDK 21 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:tomcat-21
Java Tomcat OpenJDK 17 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:tomcat-17
Java Tomcat OpenJDK 11 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:tomcat-11
Java Tomcat OpenJDK 8 Alpine 3.22 git.grey.ooo/grey.ooo/docker/java:tomcat-8 (while this still exists, it is deprecated)
Java Tomcat OpenJDK 7 Alpine 3.18 git.grey.ooo/grey.ooo/docker/java:tomcat-7 (while this still exists, it is deprecated)
.Net ✔️ .Net 10 Alpine 3.23 git.grey.ooo/grey.ooo/docker/dotnet:10
.Net .Net 9 Alpine 3.23 git.grey.ooo/grey.ooo/docker/dotnet:9
Base 3.23 Alpine 3.23 git.grey.ooo/grey.ooo/docker/base:3.23
Base 3.22 Alpine 3.21 git.grey.ooo/grey.ooo/docker/base:3.22
Base 3.21 Alpine 3.21 git.grey.ooo/grey.ooo/docker/base:3.21
Base 3.18 Alpine 3.18 git.grey.ooo/grey.ooo/docker/base:3.18
Base 3.15 Alpine 3.15 git.grey.ooo/grey.ooo/docker/base:3.15