FROM composer:2 AS composer
FROM php:8.4-apache-bookworm

RUN apt-get update && apt-get install -y --no-install-recommends \
    libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libzip-dev \
    libonig-dev libicu-dev libcurl4-openssl-dev git unzip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
    && docker-php-ext-install -j"$(nproc)" gd exif pdo_mysql mbstring zip bcmath intl curl \
    && a2enmod rewrite headers \
    && rm -rf /var/lib/apt/lists/*

COPY --from=composer /usr/bin/composer /usr/local/bin/composer
WORKDIR /opt/bensz
COPY composer.json composer.lock ./
RUN composer install --no-dev --prefer-dist --no-interaction --no-scripts --no-progress --no-autoloader
COPY app/ app/
COPY config/ config/
COPY resources/ resources/
COPY public/ /var/www/html/
COPY docker/ docker/
COPY version.json ./
ENV BENSZ_APP_ROOT=/opt/bensz BENSZ_PUBLIC_PATH=/var/www/html
RUN composer dump-autoload --no-dev --no-scripts --classmap-authoritative \
    && mkdir -p /run/bensz-upload app/content /var/www/html/app/routes \
    && chown www-data:www-data /run/bensz-upload app/content \
    && chmod 700 /run/bensz-upload

# Corresponding source has the same layout as the editable project.
COPY app/ /opt/bensz/source-build/app/
COPY config/ /opt/bensz/source-build/config/
COPY resources/ /opt/bensz/source-build/resources/
COPY public/ /opt/bensz/source-build/public/
COPY docker/ /opt/bensz/source-build/docker/
COPY tests/ /opt/bensz/source-build/tests/
COPY docs/ /opt/bensz/source-build/docs/
COPY Dockerfile .dockerignore .gitignore composer.json composer.lock README.md LICENSE NOTICE version.json /opt/bensz/source-build/
RUN mkdir -p /opt/bensz/source \
    && cp -a vendor /opt/bensz/source-build/vendor \
    && cp /opt/bensz/source-build/LICENSE /opt/bensz/source/LICENSE \
    && tar -czf /opt/bensz/source/bensz-chevereto-source.tar.gz -C /opt/bensz/source-build . \
    && rm -rf /opt/bensz/source-build

COPY LICENSE ./
COPY docker/apache.conf /etc/apache2/conf-enabled/bensz.conf
COPY docker/runtime.ini /usr/local/etc/php/conf.d/zz-bensz.ini
COPY docker/entrypoint.sh /usr/local/bin/bensz-entrypoint
RUN chmod +x /usr/local/bin/bensz-entrypoint \
    && php /opt/bensz/docker/check-runtime.php
LABEL org.opencontainers.image.title="bensz-chevereto"
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 CMD php -r 'exit(@file_get_contents("http://127.0.0.1/") === false ? 1 : 0);'
ENTRYPOINT ["bensz-entrypoint"]
CMD ["apache2-foreground"]
