# Verify and pin the resolved base image digests in your deployment pipeline.
FROM dunglas/frankenphp:1-php8.4-bookworm AS build
RUN install-php-extensions pdo_sqlite pdo_mysql mbstring sodium opcache
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --prefer-dist --no-interaction --no-scripts --no-autoloader
COPY . .
RUN composer dump-autoload --classmap-authoritative --no-dev --no-interaction

FROM build AS runtime
COPY deploy/Caddyfile /etc/caddy/Caddyfile
COPY deploy/frankenphp-worker.php /app/public/worker.php
RUN useradd --uid 10001 --no-create-home appuser \
    && setcap -r /usr/local/bin/frankenphp \
    && mkdir -p /app/storage/cache /app/storage/logs /app/storage/rates /config/caddy /data/caddy \
    && chown -R appuser:appuser /app/storage /config/caddy /data/caddy
ENV APP_ENV=production APP_DEBUG=false LOG_PATH=php://stderr MAX_REQUESTS=500
USER 10001:10001
EXPOSE 8080
CMD ["frankenphp", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
