WILT: MS SQL Server on Docker (Linux) for PHP
No talk, all code.
1# Microsoft SQL Server Prerequisites
2RUN apt-get update \
3 && apt-get install -y --no-install-recommends gnupg \
4 && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
5 && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
6 && apt-get update \
7 && apt-get install -y --no-install-recommends locales apt-transport-https \
8 && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
9 && locale-gen \
10 && echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | debconf-set-selections \
11 && apt-get -y --no-install-recommends --allow-unauthenticated install unixodbc-dev \
12 && apt-get -y --no-install-recommends --allow-unauthenticated install msodbcsql17 \
13 && apt-get -y --no-install-recommends --allow-unauthenticated install mssql-tools \
14 && rm -rf /var/lib/apt/lists/*
15RUN docker-php-ext-install pdo pdo_mysql
16RUN curl http://pecl.php.net/get/sqlsrv -o /tmp/sqlsrv.tgz \
17 && pear install /tmp/sqlsrv.tgz \
18 && curl http://pecl.php.net/get/pdo_sqlsrv -o /tmp/pdo_sqlsrv.tgz \
19 && pear install /tmp/pdo_sqlsrv.tgz \
20 && docker-php-ext-enable sqlsrv pdo_sqlsrv
OK, some talk.
https://laravel-news.com/install-microsoft-sql-drivers-php-7-docker got me close. The pecl install sqlsrv pdo_sqlsrv
command was not working, as Pecl was claiming the modules did not exist. https://stackoverflow.com/questions/45220954/pecl-install-sqlsrv-returns-no-releases-available-for-package got me closer being able to target a specific version, but going to the pecl page showed a way to get the latest stable release so I used that instead. I had to remember to run Update after adding those packages - I couldn't put them in earlier because the gnupg was required to get them in the first place.
I had to install unixopdbc-dev as otherwise I couldn't compile the tgz extensions.
Also advice from a local Docker expert reminded me to add the rm -rf /var/lib/apt/lists/*
command after any RUN
that uses apt-get, in order to remove artifacts that could bloat the image.