1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 09:04:12 +02:00

basic frankenphp support

fixes #17
This commit is contained in:
Robin Appelman 2026-03-22 14:10:19 +01:00
commit 3b4014b5e4
9 changed files with 83 additions and 41 deletions

View file

@ -84,4 +84,11 @@ if [ -n "${PROXY_BASE:-}" ]; then
cp /etc/supervisor/dnsmasq.conf /etc/supervisor/enabled/
fi
if [ -n "${FRANKENPHP:-}" ]; then
cp /etc/supervisor/frankenphp.conf /etc/supervisor/enabled/
else
cp /etc/supervisor/php-fpm.conf /etc/supervisor/enabled/
cp /etc/supervisor/nginx.conf /etc/supervisor/enabled/
fi
exec supervisord -c /etc/supervisor/supervisord.conf

View file

@ -0,0 +1,3 @@
[program:frankenphp]
command = /bin/frankenphp php-server
directory = /var/www/html

View file

@ -0,0 +1,2 @@
[program:nginx]
command = /bin/nginx -c /etc/nginx.conf

View file

@ -0,0 +1,2 @@
[program:php-fpm]
command = /bin/php-fpm --fpm-config /etc/php-fpm.conf

View file

@ -8,18 +8,11 @@ pidfile = /var/run/supervisord.pid
file = /var/run/supervisor.sock
chmod = 0777
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl = unix:///var/run/supervisor.sock
[program:nginx]
command = /bin/nginx -c /etc/nginx.conf
[program:php-fpm]
command = /bin/php-fpm --fpm-config /etc/php-fpm.conf
[include]
files = enabled/*

View file

@ -35,6 +35,7 @@
helix,
python3Packages,
dnsmasq,
frankenphp,
}: let
inherit (builtins) toString;
inherit (lib) readFile getExe concatStringsSep splitString take;
@ -163,6 +164,12 @@
phpEnv
phpEnv.packages.composer
phpunit
(frankenphp.override {
php = php.withExtensions (import ./php-ext.nix {
inherit lib php;
enableBlackfire = false;
});
})
];
};
in

44
nix/image/php-ext.nix Normal file
View file

@ -0,0 +1,44 @@
{
lib,
php,
debug ? false,
enableBlackfire ? true,
}: let
inherit (builtins) compareVersions;
inherit (lib) optionals;
withBlackfire = enableBlackfire && !debug && ((compareVersions php.version "8.1.0") == 1);
in
{
enabled,
all,
}:
enabled
++ (with all;
[
xdebug
excimer
inotify
redis
oci8
zip
pdo
pdo_pgsql
pdo_sqlite
pdo_mysql
pgsql
intl
curl
mbstring
pcntl
ldap
exif
gmp
apcu
ffi
]
++ optionals (!debug) [
smbclient # this breaks the build for no apparent reason
]
++ optionals withBlackfire [
blackfire
])

View file

@ -8,40 +8,7 @@
withBlackfire = !debug && ((compareVersions php.version "8.1.0") == 1);
in
php.buildEnv {
extensions = {
enabled,
all,
}:
enabled
++ (with all;
[
xdebug
excimer
inotify
redis
oci8
zip
pdo
pdo_pgsql
pdo_sqlite
pdo_mysql
pgsql
intl
curl
mbstring
pcntl
ldap
exif
gmp
apcu
ffi
]
++ optionals (!debug) [
smbclient # this breaks the build for no apparent reason
]
++ optionals withBlackfire [
blackfire
]);
extensions = import ./php-ext.nix {inherit lib php debug;};
extraConfig = ''
xdebug.mode=debug,trace,profile
xdebug.start_with_request=trigger

View file

@ -207,6 +207,19 @@ impl ServiceTrait for RedisTls {
}
}
#[derive(Clone, Eq, PartialEq, Debug)]
pub struct FrankenPhp;
impl ServiceTrait for FrankenPhp {
fn name(&self) -> &str {
"franken-php"
}
fn env(&self) -> &[&str] {
&["FRANKENPHP=1"]
}
}
#[derive(
Copy, Clone, Debug, PartialEq, EnumString, EnumMessage, EnumIter, IntoStaticStr, Display,
)]
@ -281,6 +294,8 @@ pub enum ServiceType {
Redis,
/// External redis instance with TLS
RedisTls,
/// Use FrankenPHP instead of PHP-FPM
FrankenPhp,
}
#[enum_dispatch]
@ -310,6 +325,7 @@ pub enum Service {
Mail(Mail),
Redis(Redis),
RedisTls(RedisTls),
FrankenPhp(FrankenPhp),
Preset(PresetService),
}
@ -352,6 +368,7 @@ impl Service {
ServiceType::Mail => Some(vec![Service::Mail(Mail)]),
ServiceType::Redis => Some(vec![Service::Redis(Redis)]),
ServiceType::RedisTls => Some(vec![Service::RedisTls(RedisTls)]),
ServiceType::FrankenPhp => Some(vec![Service::FrankenPhp(FrankenPhp)]),
}
} else {
presets