1- FROM php:8.3-fpm
1+ # Stage 1: Builder
2+ FROM php:8.3-fpm-bookworm AS builder
23
34LABEL maintainer="Steve Comrie <steve@simplicate.ca>"
45
6+ # Install build dependencies
57RUN apt-get update && apt-get upgrade -y \
6- && apt-get install -y \
7- g++ \
8- libbz2-dev \
9- libc-client-dev \
10- libcurl4-gnutls-dev \
11- libedit-dev \
12- libfreetype6-dev \
13- libicu-dev \
14- libjpeg62-turbo-dev \
15- libkrb5-dev \
16- libldap2-dev \
17- libldb-dev \
18- libmagickwand-dev \
19- libmcrypt-dev \
20- libpng-dev \
21- libpq-dev \
22- libsqlite3-dev \
23- libssl-dev \
24- libreadline-dev \
25- libxslt1-dev \
26- libzip-dev \
27- wget \
28- unzip \
29- zlib1g-dev \
30- default-mysql-client \
8+ && apt-get install -y --no-install-recommends \
9+ g++ \
10+ make \
11+ pkg-config \
12+ libbz2-dev \
13+ libc-client2007e-dev \
14+ libcurl4-gnutls-dev \
15+ libedit-dev \
16+ libfreetype6-dev \
17+ libicu-dev \
18+ libjpeg62-turbo-dev \
19+ libkrb5-dev \
20+ libldap2-dev \
21+ libldb-dev \
22+ libmagickwand-dev \
23+ libmcrypt-dev \
24+ libpng-dev \
25+ libpq-dev \
26+ libsqlite3-dev \
27+ libssl-dev \
28+ libreadline-dev \
29+ libxslt1-dev \
30+ libzip-dev \
31+ zlib1g-dev \
32+ wget \
33+ unzip \
34+ git \
35+ default-mysql-client \
3136 && docker-php-ext-install \
32- bcmath \
33- bz2 \
34- calendar \
35- exif \
36- gettext \
37- mysqli \
38- opcache \
39- pdo_mysql \
40- soap \
41- xsl \
37+ bcmath \
38+ bz2 \
39+ calendar \
40+ exif \
41+ gettext \
42+ mysqli \
43+ opcache \
44+ pdo_mysql \
45+ soap \
46+ xsl \
4247 && docker-php-ext-configure gd --with-freetype --with-jpeg \
4348 && docker-php-ext-install gd \
4449 && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
@@ -50,12 +55,39 @@ RUN apt-get update && apt-get upgrade -y \
5055 && docker-php-ext-configure zip \
5156 && docker-php-ext-install zip \
5257 && CFLAGS="$CFLAGS -D_GNU_SOURCE" docker-php-ext-install sockets \
53- && pecl install xmlrpc-1.0.0RC3 && docker-php-ext-enable xmlrpc \
54- && pecl install xdebug && docker-php-ext-enable xdebug \
55- && pecl install redis && docker-php-ext-enable redis \
58+ && pecl install xdebug redis xmlrpc-1.0.0RC3 \
59+ && docker-php-ext-enable xdebug redis xmlrpc \
5660 && yes '' | pecl install imagick && docker-php-ext-enable imagick \
57- && docker-php-source delete \
58- && apt-get remove -y g++ wget \
59- && apt-get autoremove --purge -y && apt-get autoclean -y && apt-get clean -y \
60- && rm -rf /var/lib/apt/lists/* \
61- && rm -rf /tmp/* /var/tmp/*
61+ && docker-php-source delete
62+
63+ # Stage 2: Runtime
64+ FROM php:8.3-fpm-bookworm
65+
66+ LABEL maintainer="Steve Comrie <steve@simplicate.ca>"
67+
68+ # Copy compiled extensions from builder
69+ COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
70+ COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
71+
72+ # Install only runtime dependencies
73+ RUN apt-get update && apt-get install -y --no-install-recommends \
74+ libfreetype6 \
75+ libjpeg62-turbo \
76+ libpng16-16 \
77+ libicu72 \
78+ libldap-2.5-0 \
79+ libmagickwand-6.q16-6 \
80+ libpq5 \
81+ libxslt1.1 \
82+ libzip4 \
83+ zlib1g \
84+ ghostscript \
85+ imagemagick \
86+ nano \
87+ curl \
88+ wget \
89+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
90+
91+ WORKDIR /var/www/html
92+
93+ CMD ["php-fpm" ]
0 commit comments