# syntax=docker/dockerfile:1.7 FROM php:8.3-cli AS vendor RUN apt-get update \ && apt-get install -y --no-install-recommends \ libsqlite3-dev \ libonig-dev \ libicu-dev \ libxml2-dev \ unzip \ git \ && docker-php-ext-install -j"$(nproc)" pdo_sqlite mbstring opcache intl dom \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /app COPY composer.json composer.lock ./ RUN --mount=type=cache,target=/tmp/composer-cache \ COMPOSER_CACHE_DIR=/tmp/composer-cache \ composer install --no-dev --prefer-dist --no-interaction --no-progress --optimize-autoloader FROM php:8.3-apache RUN apt-get update \ && apt-get install -y --no-install-recommends \ libsqlite3-dev \ libonig-dev \ libicu-dev \ libxml2-dev \ && docker-php-ext-install -j"$(nproc)" pdo_sqlite mbstring opcache intl dom \ && printf 'ServerName localhost\n' > /etc/apache2/conf-available/servername.conf \ && a2enconf servername \ && rm -rf /var/lib/apt/lists/* WORKDIR /var/www/html COPY --from=vendor /app/vendor /var/www/html/vendor COPY --chown=www-data:www-data . /var/www/html COPY docker/apache-vhost.conf /etc/apache2/sites-available/000-default.conf COPY docker/entrypoint.sh /usr/local/bin/app-entrypoint COPY docker/php-prod.ini /usr/local/etc/php/conf.d/zz-prod.ini RUN chmod +x /usr/local/bin/app-entrypoint HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD php -r '$fp=@fsockopen("127.0.0.1", 80); if (!$fp) { exit(1); } fclose($fp);' ENTRYPOINT ["app-entrypoint"] CMD ["apache2-foreground"]