# Dockerfile für PHP-FPM FROM php:8.4-fpm AS base # System-Abhängigkeiten: Werden selten geändert, daher ein eigener Layer RUN apt-get update && apt-get install -y \ git \ unzip \ libzip-dev \ zip \ && docker-php-ext-install zip pdo pdo_mysql \ && docker-php-ext-install opcache \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Composer installieren RUN curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer # Installiere Xdebug nur im Entwicklungsmodus ARG ENV=prod RUN if [ "$ENV" = "dev" ]; then \ pecl install xdebug \ && docker-php-ext-enable xdebug; \ fi WORKDIR /var/www/html # Kopiere zuerst nur composer.json/lock für besseres Layer-Caching COPY composer.json composer.lock ./ # Installiere Abhängigkeiten - variiert je nach Umgebung RUN if [ "$ENV" = "prod" ]; then \ composer install --no-dev --no-scripts --no-autoloader --optimize-autoloader; \ else \ composer install --no-scripts --no-autoloader; \ fi # Kopiere PHP-Konfigurationen COPY docker/php/php.common.ini /usr/local/etc/php/php.common.ini COPY docker/php/php.${ENV}.ini /usr/local/etc/php/php.ini # Wenn dev, kopiere auch xdebug-Konfiguration RUN if [ "$ENV" = "dev" ]; then \ mkdir -p /usr/local/etc/php/conf.d/; \ fi COPY docker/php/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini # Kopiere den Rest des Projekts COPY . . # Optimiere Autoloader RUN composer dump-autoload --optimize # <<--- ALLE zusätzlichen System-Dateien und chmod noch als root! COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh # Danach erst den Nutzer wechseln! RUN groupadd -g 1000 appuser && useradd -u 1000 -g appuser -m appuser RUN chown -R appuser:appuser /var/www/html USER appuser RUN mkdir -p /var/www/html/cache && \ chown -R 1000:1000 /var/www/html/cache && \ chmod -R 775 /var/www/html/cache ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["php-fpm"]