From a73d039e102ec37ac360ca2abc829a94315febf0 Mon Sep 17 00:00:00 2001 From: Andrew Stowell Date: Tue, 16 Dec 2025 22:34:57 -0500 Subject: [PATCH] removed maker-bundle, switching to apcu --- Dockerfile | 40 +++- bin/franken.sh | 24 +-- composer.json | 3 - composer.lock | 316 +----------------------------- config/bundles.php | 1 - config/packages/cache.yaml | 7 +- config/reference.php | 6 - compose.yaml => docs/compose.yaml | 0 symfony.lock | 9 - 9 files changed, 46 insertions(+), 360 deletions(-) rename compose.yaml => docs/compose.yaml (100%) diff --git a/Dockerfile b/Dockerfile index a3377e9..ce26414 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,34 @@ -# use build image, to avoid needing composer in final image -FROM composer AS build +# use build image, to simplify final image +FROM php:8.4-trixie AS build # symfony required environment variables ENV APP_ENV=prod ENV APP_DEBUG=0 ENV DEFAULT_URI='http://' -# load application info build image -RUN mkdir -p /app +# load application into build image +RUN mkdir -p /app/bin WORKDIR /app -COPY . /app/ +COPY ./bin/console /app/bin/console +COPY ./config /app/config +COPY ./public /app/public +COPY ./src /app/src +COPY ./templates /app/templates +COPY ./composer.json /app/composer.json +COPY ./composer.lock /app/composer.lock +COPY ./symfony.lock /app/symfony.lock +RUN touch /app/.env -# install dependencies +# install APCu and composer +RUN pecl install apcu && \ + docker-php-ext-enable apcu +COPY --from=composer /usr/bin/composer /usr/bin/composer +RUN apt-get update && \ + apt-get install unzip + +# install application dependencies RUN composer install --no-dev --optimize-autoloader RUN composer dump-env prod --empty -RUN php bin/console cache:clear # start creating final image FROM dunglas/frankenphp:php8.4-trixie @@ -34,12 +48,18 @@ RUN cp $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini # install APCu RUN pecl install apcu && \ - docker-php-ext-enable apcu --ini-name 10-docker-php-ext-apcu.ini + docker-php-ext-enable apcu +# app uses var folder for cache storage VOLUME ["/app/var"] +# runs http on standard port EXPOSE 80 -HEALTHCHECK --interval=5m --retries=3 --start-interval=1s --start-period=10s --timeout=2s \ +# healthcheck +HEALTHCHECK --interval=5m \ + --retries=3 \ + --start-interval=1s \ + --start-period=10s \ + --timeout=2s \ CMD curl http://localhost || exit 1 - diff --git a/bin/franken.sh b/bin/franken.sh index 269cd86..3b3e2f3 100755 --- a/bin/franken.sh +++ b/bin/franken.sh @@ -1,17 +1,17 @@ #!/bin/sh -# TODO make a Dockerfile which starts with this image as our base, -# add APCu, and our code... - # absolute path to our parent folder project_dir=$(readlink -f "$0" | xargs dirname | xargs dirname) -echo '--- clearing the cache ------------------------------------------' -"$project_dir/bin/console" cache:clear -echo '--- starting up docker ------------------------------------------' -docker run \ - -e FRANKENPHP_CONFIG="worker ./public/index.php" \ - -e APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime \ - -v /home/andrew/code/new-preauth/preauth:/app \ - -p 80:80 -p 443:443 -p 443:443/udp \ - dunglas/frankenphp +docker container rm preauth +docker build . -t digtialadapt/preauth:dev +docker run --name preauth \ + -e APP_ENV=dev \ + -e APP_DEBUG=true \ + -e APP_SECRET=f88a1074691c40415be4439345b79f69 \ + -e APP_SHARE_DIR=var/share \ + -e DEFAULT_URI=http://localhost \ + -p 80:80 \ + digtialadapt/preauth:dev + +# -v $project_dir/src:/app/src diff --git a/composer.json b/composer.json index 6bfa5f4..cc326f4 100644 --- a/composer.json +++ b/composer.json @@ -73,8 +73,5 @@ "allow-contrib": false, "require": "7.4.*" } - }, - "require-dev": { - "symfony/maker-bundle": "^1.65" } } diff --git a/composer.lock b/composer.lock index 7cc7990..b326ab7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5b9dd032f7f62dd2b033ac94311a670e", + "content-hash": "b820c972d2f251ee34778df936684dfd", "packages": [ { "name": "bacon/bacon-qr-code", @@ -3588,319 +3588,7 @@ "time": "2025-11-16T16:01:12+00:00" } ], - "packages-dev": [ - { - "name": "doctrine/inflector", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", - "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^12.0 || ^13.0", - "phpstan/phpstan": "^1.12 || ^2.0", - "phpstan/phpstan-phpunit": "^1.4 || ^2.0", - "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", - "phpunit/phpunit": "^8.5 || ^12.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2025-08-10T19:31:58+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.7.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" - }, - "time": "2025-12-06T11:56:16+00:00" - }, - { - "name": "symfony/maker-bundle", - "version": "v1.65.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/maker-bundle.git", - "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/eba30452d212769c9a5bcf0716959fd8ba1e54e3", - "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^2.0", - "nikic/php-parser": "^5.0", - "php": ">=8.1", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^6.4|^7.0|^8.0", - "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0" - }, - "conflict": { - "doctrine/doctrine-bundle": "<2.10", - "doctrine/orm": "<2.15" - }, - "require-dev": { - "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.5.0|^3.0.0", - "doctrine/orm": "^2.15|^3", - "doctrine/persistence": "^3.1|^4.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", - "symfony/security-core": "^6.4|^7.0|^8.0", - "symfony/security-http": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0", - "twig/twig": "^3.0|^4.x-dev" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MakerBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", - "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", - "keywords": [ - "code generator", - "dev", - "generator", - "scaffold", - "scaffolding" - ], - "support": { - "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.65.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-12-02T07:14:37+00:00" - }, - { - "name": "symfony/process", - "version": "v7.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v7.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-10-16T11:21:06+00:00" - } - ], + "packages-dev": [], "aliases": [], "minimum-stability": "stable", "stability-flags": {}, diff --git a/config/bundles.php b/config/bundles.php index 401569f..bdd37ac 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -2,6 +2,5 @@ return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], - Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], ]; diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml index 54874fb..0aefeed 100644 --- a/config/packages/cache.yaml +++ b/config/packages/cache.yaml @@ -5,13 +5,10 @@ framework: pools: sessionCache: adapters: - # TODO FIXME install APCu so we can use that... - - cache.adapter.array - #- cache.adapter.apcu + - cache.adapter.apcu requestCache: adapters: - - cache.adapter.array - #- cache.adapter.apcu + - cache.adapter.apcu persistSessionCache: adapters: - cache.adapter.filesystem diff --git a/config/reference.php b/config/reference.php index e888422..e0e1448 100644 --- a/config/reference.php +++ b/config/reference.php @@ -688,11 +688,6 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * enabled?: bool, // Default: false * }, * } - * @psalm-type MakerConfig = array{ - * root_namespace?: scalar|null, // Default: "App" - * generate_final_classes?: bool, // Default: true - * generate_final_entities?: bool, // Default: false - * } * @psalm-type TwigConfig = array{ * form_themes?: list, * globals?: array