| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # ============================
- # Stage 1: Builder
- # ============================
- FROM php:8.3-fpm AS builder
- # Install build dependencies
- RUN apt-get update && apt-get install -y \
- libfreetype6-dev \
- libjpeg62-turbo-dev \
- libpng-dev \
- libonig-dev \
- libmagickwand-dev \
- libzip-dev \
- unzip \
- 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 \
- && pecl install imagick-3.8.0 \
- && pecl install igbinary \
- && pecl install --configureoptions 'enable-redis-igbinary="yes" enable-redis-lzf="no" enable-redis-zstd="no" enable-redis-msgpack="no" enable-redis-lz4="no" with-liblz4="yes"' redis \
- && docker-php-ext-enable xdebug imagick igbinary redis
- # ============================
- # 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 \
- libpng-tools \
- libjpeg62-turbo \
- libfreetype6 \
- libmagickwand-7.q16-10 \
- libzip5 \
- && 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
|