- Symfony 7.4 LTS, PHP 8.4, FrankenPHP, SQLite (3-Layer src/UI|Logic|Data) - Auth: manueller OidcClient (Authorization-Code) im UI-Layer, kein Security-Bundle/league; Session-Gate via SessionAuthSubscriber - API-Guard via statischem X-Api-Token (ApiTokenSubscriber); ExceptionSubscriber - UserEntity (Auto-Provision) + Init-Migration - Docker (php:8.4-frankenphp) + compose (essen.ljh31.de, traefik-net external) - SmokeTests (7) grün: Redirect-Fälle, API-Token, Auth-Render, Logout Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
634 B
Docker
25 lines
634 B
Docker
FROM php:8.4-frankenphp
|
|
|
|
ENV APP_ENV=prod \
|
|
COMPOSER_ALLOW_SUPERUSER=1
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends git unzip sqlite3 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN docker-php-ext-install pdo pdo_sqlite opcache bcmath intl
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
WORKDIR /app
|
|
# composer.json zuerst → Layer-Cache
|
|
COPY composer.json composer.lock ./
|
|
RUN composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist
|
|
|
|
COPY . .
|
|
|
|
RUN php bin/console cache:warmup --no-interaction || \
|
|
(mkdir -p var/log var/cache prod && chmod -R 777 var)
|
|
|
|
EXPOSE 8787
|