From 15bbe044786357755691051e890fd60fbcb61791 Mon Sep 17 00:00:00 2001 From: ma-04 <120931948+ma-04@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:47:55 +0600 Subject: [PATCH 1/4] feat: add initial testing support for php-extensions --- php/Dockerfile | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/php/Dockerfile b/php/Dockerfile index 6cf568b..57e4e38 100644 --- a/php/Dockerfile +++ b/php/Dockerfile @@ -1,13 +1,13 @@ ARG PHP_VERSION=7.4 # Stage for Composer -FROM php:${PHP_VERSION}-cli-alpine as composer_builder +FROM php:${PHP_VERSION}-cli-alpine AS composer_builder RUN apk add --no-cache curl \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && rm -rf /var/cache/apk/* # Stage for WP-CLI -FROM php:${PHP_VERSION}-cli-alpine as wpcli_builder +FROM php:${PHP_VERSION}-cli-alpine AS wpcli_builder RUN apk add --no-cache curl \ && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ && chmod +x wp-cli.phar \ @@ -19,21 +19,35 @@ RUN apk add --no-cache curl \ && rm -rf /var/cache/apk/* # Main build stage -FROM php:${PHP_VERSION}-fpm-alpine as builder +FROM php:${PHP_VERSION}-fpm-alpine AS builder LABEL maintainer="Tareq Hasan " # Install build dependencies RUN set -e && \ apk add --no-cache --virtual .build-deps \ - autoconf g++ make bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \ + autoconf g++ make bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers ca-certificates \ freetype-dev icu-dev openssl-dev imagemagick-dev libjpeg-turbo-dev libwebp-dev libpng-dev libzip-dev libssh2-dev git lz4-dev libxpm-dev +# Install the Microsoft ODBC driver for SQL Server (Linux) +RUN apk add --no-cache ca-certificates curl gnupg && \ + ARCH=$(uname -m) && \ + case $ARCH in x86_64) ARCH="amd64";; aarch64|arm64) ARCH="arm64";; *) echo "Unsupported architecture: $ARCH" && exit 1;; esac && \ + curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \ + curl -O -k "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.apk" && \ + curl -O -k "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.sig" && \ + curl -O -k "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.apk" && \ + curl -O -k "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.sig" && \ + gpg --verify msodbcsql18_18.6.1.1-1_${ARCH}.sig msodbcsql18_18.6.1.1-1_${ARCH}.apk && \ + gpg --verify mssql-tools18_18.6.1.1-1_${ARCH}.sig mssql-tools18_18.6.1.1-1_${ARCH}.apk && \ + apk add --allow-untrusted msodbcsql18_18.6.1.1-1_${ARCH}.apk mssql-tools18_18.6.1.1-1_${ARCH}.apk && \ + rm -f msodbcsql18_18.6.1.1-1_${ARCH}.apk msodbcsql18_18.6.1.1-1_${ARCH}.sig mssql-tools18_18.6.1.1-1_${ARCH}.apk mssql-tools18_18.6.1.1-1_${ARCH}.sig + # Install PHP extensions using php-extension-installer RUN apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \ && curl -L -o /usr/local/bin/install-php-extensions https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions \ && chmod +x /usr/local/bin/install-php-extensions \ - && install-php-extensions bcmath curl dom exif fileinfo gd hash igbinary intl json mbstring mysqli opcache openssl pcre pdo_mysql pdo_sqlite redis shmop simplexml sodium soap sockets ssh2 tokenizer xml xmlreader xmlwriter zip zlib apcu ftp relay + && install-php-extensions bcmath curl dom exif fileinfo gd hash igbinary intl json mbstring mysqli opcache openssl pcre pdo_mysql pdo_sqlite redis shmop simplexml sodium soap sockets ssh2 tokenizer xml xmlreader xmlwriter zip zlib apcu ftp relay pspell pcntl mongodb ldap imap grpc gmp gettext excimer ev calendar xsl sqlsrv pdo_sqlsrv pdo_pgsql # Install imagick manually for PHP 8.3 RUN if [[ "$PHP_VERSION" == "8.3"* ]]; then \ From 997c2eaffe50a8ea48041d7898a3244f49959097 Mon Sep 17 00:00:00 2001 From: ma-04 <120931948+ma-04@users.noreply.github.com> Date: Fri, 30 Jan 2026 19:22:29 +0600 Subject: [PATCH 2/4] move to wget --- php/Dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/php/Dockerfile b/php/Dockerfile index 57e4e38..75bdde4 100644 --- a/php/Dockerfile +++ b/php/Dockerfile @@ -26,18 +26,18 @@ LABEL maintainer="Tareq Hasan " # Install build dependencies RUN set -e && \ apk add --no-cache --virtual .build-deps \ - autoconf g++ make bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers ca-certificates \ + autoconf g++ make bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \ freetype-dev icu-dev openssl-dev imagemagick-dev libjpeg-turbo-dev libwebp-dev libpng-dev libzip-dev libssh2-dev git lz4-dev libxpm-dev # Install the Microsoft ODBC driver for SQL Server (Linux) -RUN apk add --no-cache ca-certificates curl gnupg && \ +RUN apk add --no-cache ca-certificates wget gnupg && \ ARCH=$(uname -m) && \ case $ARCH in x86_64) ARCH="amd64";; aarch64|arm64) ARCH="arm64";; *) echo "Unsupported architecture: $ARCH" && exit 1;; esac && \ - curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \ - curl -O -k "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.apk" && \ - curl -O -k "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.sig" && \ - curl -O -k "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.apk" && \ - curl -O -k "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.sig" && \ + wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \ + wget "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.apk" && \ + wget "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.sig" && \ + wget "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.apk" && \ + wget "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.sig" && \ gpg --verify msodbcsql18_18.6.1.1-1_${ARCH}.sig msodbcsql18_18.6.1.1-1_${ARCH}.apk && \ gpg --verify mssql-tools18_18.6.1.1-1_${ARCH}.sig mssql-tools18_18.6.1.1-1_${ARCH}.apk && \ apk add --allow-untrusted msodbcsql18_18.6.1.1-1_${ARCH}.apk mssql-tools18_18.6.1.1-1_${ARCH}.apk && \ From a9e414772ac3cd0b066c5c4d235833a268561689 Mon Sep 17 00:00:00 2001 From: ma-04 <120931948+ma-04@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:22:17 +0600 Subject: [PATCH 3/4] chore: Install the Microsoft ODBC driver in the runtime image. --- php/Dockerfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/php/Dockerfile b/php/Dockerfile index 75bdde4..be6689d 100644 --- a/php/Dockerfile +++ b/php/Dockerfile @@ -80,11 +80,11 @@ COPY --from=wpcli_builder /home/www-data/.wp-cli /home/www-data/.wp-cli # Final stage FROM php:${PHP_VERSION}-fpm-alpine -# Install runtime dependencies +# Install runtime dependencies (including unixODBC for MSSQL driver) RUN apk add --no-cache \ bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \ freetype icu openssl imagemagick libjpeg-turbo libwebp libpng libzip libssh2 git libgomp \ - libssh2-dev lz4 libavif libxpm lz4-libs && \ + libssh2-dev lz4 libavif libxpm lz4-libs unixodbc && \ rm -rf /var/cache/apk/* # Copy built extensions and configs from the builder stage @@ -93,6 +93,10 @@ COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions COPY --from=builder /usr/local/bin /usr/local/bin COPY --from=builder /home/www-data/.wp-cli /home/www-data/.wp-cli +# Copy Microsoft ODBC driver and tools for SQL Server +COPY --from=builder /opt/microsoft /opt/microsoft +COPY --from=builder /etc/odbcinst.ini /etc/odbcinst.ini + # Ensure the entrypoint script is copied and has executable permissions COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh From 8af9bf7a86813283bbbca516e6a9aa962e68e1a0 Mon Sep 17 00:00:00 2001 From: ma-04 <120931948+ma-04@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:42:36 +0600 Subject: [PATCH 4/4] add runtime dependencies --- php/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/php/Dockerfile b/php/Dockerfile index be6689d..8ebe6c0 100644 --- a/php/Dockerfile +++ b/php/Dockerfile @@ -80,11 +80,12 @@ COPY --from=wpcli_builder /home/www-data/.wp-cli /home/www-data/.wp-cli # Final stage FROM php:${PHP_VERSION}-fpm-alpine -# Install runtime dependencies (including unixODBC for MSSQL driver) +# Install runtime dependencies (including libraries for PHP extensions) RUN apk add --no-cache \ bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \ freetype icu openssl imagemagick libjpeg-turbo libwebp libpng libzip libssh2 git libgomp \ - libssh2-dev lz4 libavif libxpm lz4-libs unixodbc && \ + libssh2-dev lz4 libavif libxpm lz4-libs \ + unixodbc libpq libldap c-client snappy aspell-libs libxslt gmp && \ rm -rf /var/cache/apk/* # Copy built extensions and configs from the builder stage