|
|
@@ -1,21 +1,48 @@
|
|
|
-FROM php:8.3-fpm
|
|
|
+# ============================
|
|
|
+# Stage 1: Builder
|
|
|
+# ============================
|
|
|
+FROM php:8.3-fpm AS builder
|
|
|
|
|
|
+# Install build dependencies
|
|
|
RUN apt-get update && apt-get install -y \
|
|
|
- cron \
|
|
|
libfreetype6-dev \
|
|
|
libjpeg62-turbo-dev \
|
|
|
- libmcrypt-dev \
|
|
|
libpng-dev \
|
|
|
libonig-dev \
|
|
|
libmagickwand-dev \
|
|
|
libzip-dev \
|
|
|
unzip \
|
|
|
- msmtp-mta \
|
|
|
- && docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
|
- && docker-php-ext-install -j$(nproc) gd \
|
|
|
- && docker-php-ext-install -j$(nproc) pdo pdo_mysql mysqli \
|
|
|
- && docker-php-ext-install -j$(nproc) zip exif opcache iconv mbstring \
|
|
|
- && pecl install xdebug && docker-php-ext-enable xdebug \
|
|
|
-# && pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt \
|
|
|
- && pecl install imagick-3.8.0 && docker-php-ext-enable imagick
|
|
|
+ pkg-config \
|
|
|
+ autoconf \
|
|
|
+ build-essential \
|
|
|
+ && rm -rf /var/lib/apt/lists/*
|
|
|
+
|
|
|
+# Configure & install PHP extensions
|
|
|
+RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
|
+ && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli zip exif opcache iconv mbstring \
|
|
|
+ && pecl install xdebug imagick-3.8.0 \
|
|
|
+ && pecl install igbinary && docker-php-ext-enable igbinary \
|
|
|
+ && yes '' | pecl install redis && docker-php-ext-enable redis \
|
|
|
+ && docker-php-ext-enable xdebug imagick
|
|
|
+
|
|
|
+# ============================
|
|
|
+# Stage 2: Production runtime
|
|
|
+# ============================
|
|
|
+FROM php:8.3-fpm
|
|
|
+
|
|
|
+# Install only runtime packages
|
|
|
+RUN apt-get update && apt-get install -y --no-install-recommends msmtp-mta \
|
|
|
+ && rm -rf /var/lib/apt/lists/*
|
|
|
+
|
|
|
+# Copy compiled PHP extensions and config from builder
|
|
|
+COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
|
|
|
+COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d
|
|
|
+
|
|
|
+# Optional: set working directory
|
|
|
+# WORKDIR /var/www/html
|
|
|
+
|
|
|
+# Optional: expose PHP-FPM port
|
|
|
+# EXPOSE 9000
|
|
|
|
|
|
+# Optional: set non-root user (if needed)
|
|
|
+# USER www-data
|