Last active
November 17, 2025 00:34
-
-
Save 1ma/8067c028c64bbda2a8e6cde691620f63 to your computer and use it in GitHub Desktop.
Sample customization of Docker official PHP image with multistage build
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| FROM php:8.4-fpm AS build | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| libfreetype-dev \ | |
| libjpeg62-turbo-dev \ | |
| libmemcached-dev \ | |
| libpng-dev \ | |
| libpq-dev \ | |
| libsqlite3-dev \ | |
| zlib1g-dev \ | |
| && rm -rf /var/lib/apt/lists/* | |
| RUN docker-php-source extract | |
| WORKDIR /usr/src/php/ext | |
| RUN pecl bundle igbinary \ | |
| && pecl bundle memcached \ | |
| && pecl bundle msgpack \ | |
| && pecl bundle redis \ | |
| && pecl bundle xdebug | |
| ENV PHP_CFLAGS="$PHP_CFLAGS -Os" | |
| RUN docker-php-ext-configure gd --with-freetype --with-jpeg | |
| RUN docker-php-ext-install -j$(nproc) \ | |
| bcmath \ | |
| gd \ | |
| igbinary \ | |
| msgpack \ | |
| pdo_mysql \ | |
| pdo_pgsql \ | |
| pdo_sqlite \ | |
| pgsql \ | |
| redis \ | |
| xdebug | |
| RUN docker-php-ext-configure memcached --enable-memcached-igbinary=yes --enable-memcached-msgpack=yes | |
| RUN docker-php-ext-install -j$(nproc) \ | |
| memcached | |
| FROM scratch AS exts | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/bcmath.so /libs/bcmath.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/gd.so /libs/gd.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/igbinary.so /libs/igbinary.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/memcached.so /libs/memcached.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/msgpack.so /libs/msgpack.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/pdo_mysql.so /libs/pdo_mysql.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/pdo_pgsql.so /libs/pdo_pgsql.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/pgsql.so /libs/pgsql.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/redis.so /libs/redis.so | |
| COPY --from=build /usr/local/lib/php/extensions/no-debug-non-zts-20240924/xdebug.so /libs/xdebug.so | |
| FROM php:8.4-fpm AS final | |
| COPY --from=exts /libs/* /usr/local/lib/php/extensions/no-debug-non-zts-20240924/ | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends \ | |
| libfreetype6 \ | |
| libjpeg62-turbo \ | |
| libmemcached11t64 \ | |
| libpng16-16t64 \ | |
| libpq5 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| RUN docker-php-ext-enable \ | |
| bcmath \ | |
| gd \ | |
| igbinary \ | |
| memcached \ | |
| msgpack \ | |
| pdo_mysql \ | |
| pdo_pgsql \ | |
| pgsql \ | |
| redis \ | |
| xdebug |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment