Sign inSign up

paularlott/knot-frankenscriptling-runtime

By paularlott

•Updated about 9 hours ago

FrankenPHP runtime with the Scriptling PHP extension, no dev tools

Buildkit cache
Image
0

843

paularlott/knot-frankenscriptling-runtime repository overview

⁠knot-frankenscriptling-runtime

FrankenPHP⁠ (Caddy + PHP in a single process) with the Scriptling⁠ PHP extension and the knot toolchain but no development tools — no ssh, git, editors, Node.js or Composer. It is knot-frankenphp-runtime⁠ with the FrankenPHP/Caddy binary rebuilt to additionally include the Scriptling extension, and it is the base for knot-frankenscriptling⁠ (which adds the dev layer).

This exposes the Scriptling⁠ class to PHP, so applications can embed the Scriptling scripting/agent runtime directly:

$vm = new Scriptling();
$vm->setVar('name', 'world');
echo $vm->eval('name');           // -> "world"
echo $vm->getScriptlingVersion(); // e.g. 0.21.3

Serve any HTML or PHP file from ~/public_html on port 80, exactly like knot-frankenphp-runtime. Without KNOT_SERVER there is no long-running foreground process, so run it with a command (or the knot agent) like any knot image.

⁠How it works

A startup hook (/etc/knot-startup.d/01-startup-frankenphp):

  1. Installs /etc/cron.d/container-crons and starts cron.
  2. Creates ~/public_html if missing.
  3. Starts FrankenPHP with the bundled /etc/frankenphp/Caddyfile, which serves ~/public_html via php_server, logs to syslog, and runs the admin API on 127.0.0.1:2019.

⁠Tags

All tags are multi-arch (linux/amd64, linux/arm64); see Docker Hub⁠ for the current list.

Each release is also tagged <version>-<BUILD_DATE>.

⁠Usage

docker run -d \
  -p 8080:80 \
  -e KNOT_SERVER=https://knot.example.com \
  -e KNOT_USER=alice \
  -v knot_home:/home \
  paularlott/knot-frankenscriptling-runtime:8.5

⁠Environment variables

The entrypoint mirrors knot-ubuntu, so it supports the common knot variables:

VariableDefaultDescription
KNOT_USERknotRuntime user (uid 1000); created if missing
KNOT_SERVER(unset)knot server URL; if set, the agent is downloaded and started
KNOT_AGENT_ENDPOINT(unset)Agent endpoint reported to the server
KNOT_SPACEID(unset)Space identifier
KNOT_SERVICE_PASSWORD(auto-generated UUID)Shared service password
KNOT_SSHD(unset)Set to native to start sshd (not installed in this image; use knot-frankenscriptling)
KNOT_SSH_PORT2222Port for the SSH daemon
KNOT_SYSLOG_PORT1514Syslog forward target (0 disables forwarding)
TZEtc/UTCTimezone (also sets date.timezone)

⁠Exposed ports

PortProtocolPurpose
80TCPHTTP (FrankenPHP)
443TCP/UDPHTTPS / HTTP/3 (when enabled)
2019TCPCaddy admin API

⁠Volumes

  • /home — persistent home directory; serve content from ~/public_html.

⁠License

FrankenPHP is MIT⁠. Scriptling retains its own licence — see paularlott/scriptling⁠. This image's packaging is Apache License 2.0⁠.

Source: paularlott/knot-base-images⁠.

Tag summary

Content type

Image

Digest

sha256:1d85e952c…

Size

297.7 MB

Last updated

about 9 hours ago

docker pull paularlott/knot-frankenscriptling-runtime:8.5-20260929