FROM php:8.3-apache # System dependencies for mPDF RUN apt-get update && apt-get install -y \ libzip-dev \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ zip \ unzip \ curl \ poppler-utils \ tesseract-ocr \ tesseract-ocr-deu \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install pdo pdo_mysql zip gd \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Install Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html # Copy composer files first for layer caching COPY composer.json composer.lock* ./ RUN composer install --no-dev --no-interaction --optimize-autoloader 2>/dev/null || true # Copy application COPY . . # PHP configuration COPY php/uploads.ini /usr/local/etc/php/conf.d/uploads.ini # Apache configuration COPY apache/steuerkram.conf /etc/apache2/sites-available/000-default.conf RUN a2enmod rewrite headers # Permissions RUN mkdir -p /var/www/html/public/static/uploads /var/www/html/data \ && chown -R www-data:www-data /var/www/html \ && chmod -R 755 /var/www/html/public/static/uploads \ && chmod -R 755 /var/www/html/data EXPOSE 80 # Ensure upload directory has correct ownership at runtime (covers named volume mounts) COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] CMD ["apache2-foreground"]