From 8a675cf02f4b82beb73f5db4e1f4422049b72e1a Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Sat, 30 May 2026 17:28:59 +0200 Subject: [PATCH] fix: aligen docker image with symfyon stu --- .dockerignore | 4 ++-- Dockerfile | 37 ++++++++++++++++++++----------- Dockerfile.dev | 10 +++++++-- docker/php/conf.d/20-app.dev.ini | 2 ++ docker/php/conf.d/20-app.prod.ini | 6 +++++ 5 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 docker/php/conf.d/20-app.dev.ini create mode 100644 docker/php/conf.d/20-app.prod.ini diff --git a/.dockerignore b/.dockerignore index 6c23e5a..d6f21a9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -31,7 +31,7 @@ vendor/ # Runtime dirs (generated at build or run time, not from source) var/ -# Env files — config is injected at runtime via Docker environment variables -.env +# Env files — .env contains only placeholder defaults and is needed by composer dump-env; +# local overrides with real secrets stay excluded .env.local .env.*.local diff --git a/Dockerfile b/Dockerfile index 31bd56e..bc313f6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,16 @@ +#syntax=docker/dockerfile:1 + FROM dunglas/frankenphp:1-php8.4-alpine AS base RUN apk add --no-cache icu-dev libzip-dev \ - && docker-php-ext-install -j$(nproc) intl zip \ + && docker-php-ext-install -j$(nproc) intl opcache zip \ && apk del icu-dev libzip-dev \ - && apk add --no-cache curl icu-libs libzip + && apk add --no-cache curl icu-libs libzip \ + && cp "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \ + && mkdir -p $PHP_INI_DIR/app.conf.d + +ENV PHP_INI_SCAN_DIR=":$PHP_INI_DIR/app.conf.d" +ENV COMPOSER_ALLOW_SUPERUSER=1 WORKDIR /app @@ -21,25 +28,29 @@ RUN composer install \ # ── build stage (generate optimised classmap with source present) ────────────── FROM deps AS build COPY . . -RUN composer dump-autoload --optimize --no-dev --no-interaction && \ +RUN composer dump-autoload --classmap-authoritative --no-dev --no-interaction && \ mkdir -p var/cache var/log && \ - APP_ENV=prod APP_SECRET=placeholder php bin/console cache:warmup --no-debug + APP_ENV=prod APP_SECRET=placeholder php bin/console cache:warmup --no-debug && \ + composer dump-env prod # ── final (prod) stage — no composer binary ──────────────────────────────────── FROM base AS final RUN addgroup -S app && adduser -S -G app app -COPY --from=build /app/vendor /app/vendor -COPY --from=build /app/var/cache/prod /app/var/cache/prod -COPY bin/ ./bin/ -COPY config/ ./config/ -COPY public/ ./public/ -COPY src/ ./src/ -COPY composer.json composer.lock ./ -COPY docker/frankenphp/Caddyfile /etc/caddy/Caddyfile +COPY --link --from=build /app/vendor /app/vendor +COPY --link --from=build /app/var/cache/prod /app/var/cache/prod +COPY --link bin/ ./bin/ +COPY --link config/ ./config/ +COPY --link public/ ./public/ +COPY --link src/ ./src/ +COPY --link composer.json composer.lock ./ +COPY --link docker/frankenphp/Caddyfile /etc/caddy/Caddyfile +COPY --link docker/php/conf.d/20-app.prod.ini $PHP_INI_DIR/app.conf.d/ -RUN mkdir -p var/cache/prod/pools var/log && chown -R app:app /app +RUN chmod +x bin/console && \ + mkdir -p var/cache/prod/pools var/log /config/caddy /data/caddy && \ + chown -R app:app /app /config /data USER app diff --git a/Dockerfile.dev b/Dockerfile.dev index ed18145..8d17d1a 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,9 +1,11 @@ FROM dunglas/frankenphp:1-php8.4-alpine RUN apk add --no-cache icu-dev libzip-dev \ - && docker-php-ext-install -j$(nproc) intl zip \ + && docker-php-ext-install -j$(nproc) intl opcache zip \ && apk del icu-dev libzip-dev \ - && apk add --no-cache curl icu-libs libzip + && apk add --no-cache curl icu-libs libzip \ + && cp "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" \ + && mkdir -p $PHP_INI_DIR/app.conf.d COPY --from=composer:2 /usr/bin/composer /usr/bin/composer @@ -12,9 +14,13 @@ RUN apk add --no-cache ${PHPIZE_DEPS} linux-headers \ && docker-php-ext-enable xdebug \ && apk del ${PHPIZE_DEPS} +ENV PHP_INI_SCAN_DIR=":$PHP_INI_DIR/app.conf.d" +ENV COMPOSER_ALLOW_SUPERUSER=1 + WORKDIR /app COPY docker/php/xdebug.ini /usr/local/etc/php/conf.d/docker-xdebug.ini +COPY docker/php/conf.d/20-app.dev.ini $PHP_INI_DIR/app.conf.d/ COPY docker/frankenphp/Caddyfile.dev /etc/caddy/Caddyfile COPY composer.json composer.lock* ./ RUN composer install --no-scripts --no-interaction --prefer-dist diff --git a/docker/php/conf.d/20-app.dev.ini b/docker/php/conf.d/20-app.dev.ini new file mode 100644 index 0000000..97126a0 --- /dev/null +++ b/docker/php/conf.d/20-app.dev.ini @@ -0,0 +1,2 @@ +opcache.validate_timestamps=1 +opcache.revalidate_freq=0 diff --git a/docker/php/conf.d/20-app.prod.ini b/docker/php/conf.d/20-app.prod.ini new file mode 100644 index 0000000..4cc23c3 --- /dev/null +++ b/docker/php/conf.d/20-app.prod.ini @@ -0,0 +1,6 @@ +opcache.enable=1 +opcache.enable_cli=0 +opcache.memory_consumption=128 +opcache.max_accelerated_files=20000 +opcache.validate_timestamps=0 +expose_php=0