Skip to content

Commit 15057be

Browse files
authored
feat: add php extensions (#29)
* feat: add initial testing support for php-extensions * move to wget * chore: Install the Microsoft ODBC driver in the runtime image. * add runtime dependencies * retrigger checks
1 parent 3c743e7 commit 15057be

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

php/Dockerfile

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,25 @@ RUN set -e && \
3333
autoconf g++ make bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \
3434
freetype-dev icu-dev openssl-dev imagemagick-dev libjpeg-turbo-dev libwebp-dev libpng-dev libzip-dev libssh2-dev git lz4-dev libxpm-dev
3535

36+
# Install the Microsoft ODBC driver for SQL Server (Linux)
37+
RUN apk add --no-cache ca-certificates wget gnupg && \
38+
ARCH=$(uname -m) && \
39+
case $ARCH in x86_64) ARCH="amd64";; aarch64|arm64) ARCH="arm64";; *) echo "Unsupported architecture: $ARCH" && exit 1;; esac && \
40+
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --import - && \
41+
wget "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.apk" && \
42+
wget "https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_${ARCH}.sig" && \
43+
wget "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.apk" && \
44+
wget "https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_${ARCH}.sig" && \
45+
gpg --verify msodbcsql18_18.6.1.1-1_${ARCH}.sig msodbcsql18_18.6.1.1-1_${ARCH}.apk && \
46+
gpg --verify mssql-tools18_18.6.1.1-1_${ARCH}.sig mssql-tools18_18.6.1.1-1_${ARCH}.apk && \
47+
apk add --allow-untrusted msodbcsql18_18.6.1.1-1_${ARCH}.apk mssql-tools18_18.6.1.1-1_${ARCH}.apk && \
48+
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
49+
3650
# Install PHP extensions using php-extension-installer
3751
RUN apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
3852
&& curl -L -o /usr/local/bin/install-php-extensions https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions \
3953
&& chmod +x /usr/local/bin/install-php-extensions \
40-
&& 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
54+
&& 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
4155

4256
# Install imagick manually for PHP 8.3
4357
RUN if [[ "$PHP_VERSION" == "8.3"* ]]; then \
@@ -70,11 +84,12 @@ COPY --from=wpcli_builder /home/www-data/.wp-cli /home/www-data/.wp-cli
7084
# Final stage
7185
FROM php:${PHP_VERSION}-fpm-alpine
7286

73-
# Install runtime dependencies
87+
# Install runtime dependencies (including libraries for PHP extensions)
7488
RUN apk add --no-cache \
7589
bash sed ghostscript mysql-client imagemagick shadow msmtp unzip linux-headers \
7690
freetype icu openssl imagemagick libjpeg-turbo libwebp libpng libzip libssh2 git libgomp \
77-
libssh2-dev lz4 libavif libxpm lz4-libs && \
91+
libssh2-dev lz4 libavif libxpm lz4-libs \
92+
unixodbc libpq libldap c-client snappy aspell-libs libxslt gmp && \
7893
rm -rf /var/cache/apk/*
7994

8095
# Copy built extensions and configs from the builder stage
@@ -83,6 +98,10 @@ COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions
8398
COPY --from=builder /usr/local/bin /usr/local/bin
8499
COPY --from=builder /home/www-data/.wp-cli /home/www-data/.wp-cli
85100

101+
# Copy Microsoft ODBC driver and tools for SQL Server
102+
COPY --from=builder /opt/microsoft /opt/microsoft
103+
COPY --from=builder /etc/odbcinst.ini /etc/odbcinst.ini
104+
86105
# Ensure the entrypoint script is copied and has executable permissions
87106
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
88107
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

0 commit comments

Comments
 (0)