Skip to content

Instantly share code, notes, and snippets.

@xenogew
Last active June 4, 2025 03:42
Show Gist options
  • Save xenogew/3440d323b00e1d661966f2b2ca3ef64a to your computer and use it in GitHub Desktop.
Save xenogew/3440d323b00e1d661966f2b2ca3ef64a to your computer and use it in GitHub Desktop.
Example of PHP 8.4 Docker image install with MS SQL Server extensions
FROM php:8.4-fpm-bookworm
WORKDIR /application
ENV ACCEPT_EULA=Y
# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive
ARG DEBIAN_VERSION
# LEGACY packages that ever installed when last time research of PHP 7.4,
# not sure it related to the other factor when run any function,
# please check it and confirm by your own envrionment.
# NOTICE: libraries list from `user:webchi`
# gnupg libpq-dev libzip-dev
# NOTICE: libraries list from `me`
# apt-utils libxml2-dev gnupg apt-transport-https
# Install selected extensions and other stuff
RUN apt update \
&& apt -y --no-install-recommends install gnupg libicu-dev \
&& apt clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install MS ODBC Driver for SQL Server
RUN DEBIAN_VERSION=$(cat /etc/debian_version | cut -d. -f1) \
&& curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
&& curl https://packages.microsoft.com/config/debian/${DEBIAN_VERSION}/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt update \
&& apt -y --no-install-recommends install msodbcsql18 unixodbc-dev \
&& pecl install sqlsrv \
&& pecl install pdo_sqlsrv \
&& echo "extension=pdo_sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini \
&& echo "extension=sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-sqlsrv.ini \
&& apt clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install required extensions
RUN docker-php-ext-install intl mysqli pdo pdo_mysql
@xenogew
Copy link
Author

xenogew commented Jun 4, 2025

Thanks guys, I didn't expect it to be helpful for your work this much.
Even I'm not the PHP developer, but I want to play and look around to update it.

And I reduce/remove some installed packages in Dockerfile and setup testing environment with Docker Compose, and it worked you can check it and adapt to your own work if you think it is good.

Lastly, my research for setup things up and testing is on my repository
https://github.com/xenogew/php-mssql-docker

P.S. For those who want the last version, please check diff with Revision tab on this Gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment