From 4865f7bac12ebf705bdb7c158bfd4a0bb7ff4475 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 13 Dec 2025 14:58:18 +0530 Subject: [PATCH 1/5] update: use pecl and don't build from scratch if available to improve build speed. --- Dockerfile | 83 +++++++++++------------------------------------------- 1 file changed, 16 insertions(+), 67 deletions(-) diff --git a/Dockerfile b/Dockerfile index e546a88..4d34f42 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,70 +43,37 @@ RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ RUN docker-php-ext-install sockets FROM compile AS redis -RUN \ - # Redis Extension - git clone --depth 1 --branch $PHP_REDIS_VERSION https://github.com/phpredis/phpredis.git && \ - cd phpredis && \ - phpize && \ - ./configure && \ - make && make install +RUN pecl install redis-${PHP_REDIS_VERSION} ## Swoole Extension FROM compile AS swoole -RUN \ - git clone --depth 1 --branch $PHP_SWOOLE_VERSION https://github.com/swoole/swoole-src.git && \ - cd swoole-src && \ - phpize && \ - ./configure --enable-sockets --enable-http2 --enable-openssl --enable-swoole-curl && \ - make && make install && \ - cd .. +RUN pecl install swoole-${PHP_SWOOLE_VERSION#v} ## Imagick Extension FROM compile AS imagick -RUN \ - git clone --depth 1 --branch $PHP_IMAGICK_VERSION https://github.com/imagick/imagick && \ - cd imagick && \ - phpize && \ - ./configure && \ - make && make install +RUN pecl install imagick-${PHP_IMAGICK_VERSION} ## YAML Extension FROM compile AS yaml -RUN \ - git clone --depth 1 --branch $PHP_YAML_VERSION https://github.com/php/pecl-file_formats-yaml && \ - cd pecl-file_formats-yaml && \ - phpize && \ - ./configure && \ - make && make install +RUN pecl install yaml-${PHP_YAML_VERSION} ## Maxminddb extension FROM compile AS maxmind -RUN \ - git clone --depth 1 --branch $PHP_MAXMINDDB_VERSION https://github.com/maxmind/MaxMind-DB-Reader-php.git && \ - cd MaxMind-DB-Reader-php && \ - cd ext && \ - phpize && \ - ./configure && \ - make && make install +RUN pecl install maxminddb-${PHP_MAXMINDDB_VERSION#v} # Mongodb Extension FROM compile AS mongodb -RUN \ - git clone --depth 1 --branch $PHP_MONGODB_VERSION https://github.com/mongodb/mongo-php-driver.git && \ - cd mongo-php-driver && \ - git submodule update --init && \ - phpize && \ - ./configure && \ - make && make install +RUN pecl install mongodb-${PHP_MONGODB_VERSION} # Zstd Compression FROM compile AS zstd -RUN git clone --recursive -n https://github.com/kjdev/php-ext-zstd.git \ - && cd php-ext-zstd \ - && git checkout $PHP_ZSTD_VERSION \ - && phpize \ - && ./configure --with-libzstd \ - && make && make install +RUN pecl install zstd-${PHP_ZSTD_VERSION} + +FROM compile AS scrypt +RUN pecl install scrypt-${PHP_SCRYPT_VERSION} + +FROM compile AS xdebug +RUN pecl install xdebug-${PHP_XDEBUG_VERSION} ## Brotli Extension FROM compile AS brotli @@ -115,7 +82,7 @@ RUN git clone https://github.com/kjdev/php-ext-brotli.git \ && git reset --hard $PHP_BROTLI_VERSION \ && phpize \ && ./configure --with-libbrotli \ - && make && make install + && make -j$(nproc) && make install ## LZ4 Extension FROM compile AS lz4 @@ -124,7 +91,7 @@ RUN git clone --recursive https://github.com/kjdev/php-ext-lz4.git \ && git reset --hard $PHP_LZ4_VERSION \ && phpize \ && ./configure --with-lz4-includedir=/usr \ - && make && make install + && make -j$(nproc) && make install ## Snappy Extension FROM compile AS snappy @@ -133,25 +100,7 @@ RUN git clone --recursive https://github.com/kjdev/php-ext-snappy.git \ && git reset --hard $PHP_SNAPPY_VERSION \ && phpize \ && ./configure \ - && make && make install - -## Scrypt Extension -FROM compile AS scrypt -RUN git clone --depth 1 https://github.com/DomBlack/php-scrypt.git \ - && cd php-scrypt \ - && git reset --hard $PHP_SCRYPT_VERSION \ - && phpize \ - && ./configure --enable-scrypt \ - && make && make install - -## XDebug Extension -FROM compile AS xdebug -RUN \ - git clone --depth 1 --branch $PHP_XDEBUG_VERSION https://github.com/xdebug/xdebug && \ - cd xdebug && \ - phpize && \ - ./configure && \ - make && make install + && make -j$(nproc) && make install FROM compile AS opentelemetry RUN pecl install opentelemetry-${PHP_OPENTELEMETRY_VERSION} From c3053344d72848a5f2dacfe457f74782ad125bef Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 13 Dec 2025 15:08:54 +0530 Subject: [PATCH 2/5] attempt: a supposed improvement. --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 4d34f42..5dc922b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,8 @@ RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ lz4-dev \ curl-dev +ENV MAKEFLAGS="-j$(nproc)" + RUN docker-php-ext-install sockets FROM compile AS redis From 59bb350d676c080bc6a9db3d804fe4a4c8b7520d Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 13 Dec 2025 15:54:04 +0530 Subject: [PATCH 3/5] attempt: a supposed improvement. --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5dc922b..8b60849 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,8 @@ ARG BASEIMAGE="php:8.4.11-cli-alpine3.22" FROM $BASEIMAGE AS compile +ARG MAKEFLAGS="-j4" + ENV PHP_REDIS_VERSION="6.2.0" \ PHP_SWOOLE_VERSION="v6.0.2" \ PHP_IMAGICK_VERSION="3.8.0" \ @@ -40,7 +42,7 @@ RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ lz4-dev \ curl-dev -ENV MAKEFLAGS="-j$(nproc)" +ENV MAKEFLAGS=${MAKEFLAGS} RUN docker-php-ext-install sockets From fc548d7a6ea4dc41b3a8495711a52a9fa5335c56 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 13 Dec 2025 16:58:11 +0530 Subject: [PATCH 4/5] another attempt. maybe it is fast on my just arch. --- Dockerfile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8b60849..0405acf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,6 @@ ARG BASEIMAGE="php:8.4.11-cli-alpine3.22" FROM $BASEIMAGE AS compile -ARG MAKEFLAGS="-j4" - ENV PHP_REDIS_VERSION="6.2.0" \ PHP_SWOOLE_VERSION="v6.0.2" \ PHP_IMAGICK_VERSION="3.8.0" \ @@ -17,7 +15,8 @@ ENV PHP_REDIS_VERSION="6.2.0" \ PHP_LZ4_VERSION="0.4.4" \ PHP_XDEBUG_VERSION="3.4.3" \ PHP_OPENTELEMETRY_VERSION="1.1.3" \ - PHP_PROTOBUF_VERSION="4.29.3" + PHP_PROTOBUF_VERSION="4.29.3" \ + MAKEFLAGS="-w -j4" RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ linux-headers \ @@ -42,8 +41,6 @@ RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ lz4-dev \ curl-dev -ENV MAKEFLAGS=${MAKEFLAGS} - RUN docker-php-ext-install sockets FROM compile AS redis From 53fb61fdef2d77ed8b90d3ce4ee737ae02fd6aa7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 13 Dec 2025 17:11:25 +0530 Subject: [PATCH 5/5] try: per stage flags. --- Dockerfile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0405acf..996b549 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,37 +44,37 @@ RUN apk update && apk upgrade && apk add --no-cache --virtual .deps \ RUN docker-php-ext-install sockets FROM compile AS redis -RUN pecl install redis-${PHP_REDIS_VERSION} +RUN MAKEFLAGS="-j4" pecl install redis-${PHP_REDIS_VERSION} ## Swoole Extension FROM compile AS swoole -RUN pecl install swoole-${PHP_SWOOLE_VERSION#v} +RUN MAKEFLAGS="-j4" pecl install swoole-${PHP_SWOOLE_VERSION#v} ## Imagick Extension FROM compile AS imagick -RUN pecl install imagick-${PHP_IMAGICK_VERSION} +RUN MAKEFLAGS="-j4" pecl install imagick-${PHP_IMAGICK_VERSION} ## YAML Extension FROM compile AS yaml -RUN pecl install yaml-${PHP_YAML_VERSION} +RUN MAKEFLAGS="-j4" pecl install yaml-${PHP_YAML_VERSION} ## Maxminddb extension FROM compile AS maxmind -RUN pecl install maxminddb-${PHP_MAXMINDDB_VERSION#v} +RUN MAKEFLAGS="-j4" pecl install maxminddb-${PHP_MAXMINDDB_VERSION#v} # Mongodb Extension FROM compile AS mongodb -RUN pecl install mongodb-${PHP_MONGODB_VERSION} +RUN MAKEFLAGS="-j4" pecl install mongodb-${PHP_MONGODB_VERSION} # Zstd Compression FROM compile AS zstd -RUN pecl install zstd-${PHP_ZSTD_VERSION} +RUN MAKEFLAGS="-j4" pecl install zstd-${PHP_ZSTD_VERSION} FROM compile AS scrypt -RUN pecl install scrypt-${PHP_SCRYPT_VERSION} +RUN MAKEFLAGS="-j4" pecl install scrypt-${PHP_SCRYPT_VERSION} FROM compile AS xdebug -RUN pecl install xdebug-${PHP_XDEBUG_VERSION} +RUN MAKEFLAGS="-j4" pecl install xdebug-${PHP_XDEBUG_VERSION} ## Brotli Extension FROM compile AS brotli @@ -104,10 +104,10 @@ RUN git clone --recursive https://github.com/kjdev/php-ext-snappy.git \ && make -j$(nproc) && make install FROM compile AS opentelemetry -RUN pecl install opentelemetry-${PHP_OPENTELEMETRY_VERSION} +RUN MAKEFLAGS="-j4" pecl install opentelemetry-${PHP_OPENTELEMETRY_VERSION} FROM compile AS protobuf -RUN pecl install protobuf-${PHP_PROTOBUF_VERSION} +RUN MAKEFLAGS="-j4" pecl install protobuf-${PHP_PROTOBUF_VERSION} FROM compile AS gd RUN docker-php-ext-install gd