FROM php:8.3-apache RUN apt-get update && apt-get install -y --no-install-recommends \ libsqlite3-dev unzip git \ && docker-php-ext-install pdo pdo_sqlite \ && a2enmod rewrite \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html COPY composer.json composer.lock* ./ RUN composer install --no-dev --no-interaction --prefer-dist --no-progress COPY . . # Write a clean Apache site config pointing at public/ and routing every # unmatched URL to the front controller via FallbackResource. That replaces # the need for .htaccess rewrites (the .htaccess is kept as defense-in-depth # for deployments that don't use this image). RUN mkdir -p /var/www/data /var/www/data/sessions \ && chown -R www-data:www-data /var/www/data \ && printf '%s\n' \ '' \ ' DocumentRoot /var/www/html/public' \ ' ' \ ' Options -Indexes +FollowSymLinks' \ ' AllowOverride All' \ ' Require all granted' \ ' FallbackResource /index.php' \ ' ' \ ' ErrorLog ${APACHE_LOG_DIR}/error.log' \ ' CustomLog ${APACHE_LOG_DIR}/access.log combined' \ '' \ > /etc/apache2/sites-available/000-default.conf EXPOSE 80 CMD ["apache2-foreground"]