From 92380e534af344a69f9cc4540358dd6ce485c799 Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Sat, 30 May 2026 12:38:38 +0200 Subject: [PATCH] feat(docker): migrate base image from php-cli to FrankenPHP Alpine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace php:8.4-cli-alpine3.21 with dunglas/frankenphp:1-php8.4-alpine. No Go toolchain required — the official image ships as a pre-compiled Alpine binary. - Drop docker-php-ext-install opcache (FrankenPHP enables it by default) - Both dev and final stages run frankenphp run --config /etc/caddy/Caddyfile - Dev stage bakes in Caddyfile.dev (no worker mode, Xdebug compatible) - Final stage bakes in production Caddyfile Co-Authored-By: Claude Sonnet 4.6 --- Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 20eaae1..267b8e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,9 @@ -FROM php:8.4-cli-alpine3.21 AS base +FROM dunglas/frankenphp:1-php8.4-alpine AS base RUN apk add --no-cache \ curl \ icu-libs \ - libzip \ - && docker-php-ext-install opcache + libzip WORKDIR /app @@ -32,11 +31,12 @@ RUN apk add --no-cache ${PHPIZE_DEPS} linux-headers \ && docker-php-ext-enable xdebug \ && apk del ${PHPIZE_DEPS} COPY docker/php/xdebug.ini /usr/local/etc/php/conf.d/docker-xdebug.ini +COPY docker/frankenphp/Caddyfile.dev /etc/caddy/Caddyfile COPY composer.json composer.lock* ./ RUN composer install --no-scripts --no-interaction --prefer-dist EXPOSE 8080 ENV APP_ENV=dev APP_DEBUG=1 -CMD ["php", "-S", "0.0.0.0:8080", "-t", "public", "public/index.php"] +CMD ["frankenphp", "run", "--config", "/etc/caddy/Caddyfile"] # ── final (prod) stage — no composer binary ──────────────────────────────────── FROM base AS final @@ -45,6 +45,7 @@ RUN addgroup -S app && adduser -S -G app app COPY --from=build /app/vendor /app/vendor COPY . . +COPY docker/frankenphp/Caddyfile /etc/caddy/Caddyfile RUN mkdir -p var/cache var/log \ && chown -R app:app /app @@ -54,4 +55,4 @@ USER app EXPOSE 8080 ENV APP_ENV=prod APP_DEBUG=0 -CMD ["php", "-S", "0.0.0.0:8080", "-t", "public", "public/index.php"] +CMD ["frankenphp", "run", "--config", "/etc/caddy/Caddyfile"]