使用docker和phpalpineimage为laravel项目安装sqlsrv驱动程序



我需要连接到远程MSSQL数据库,我使用docker环境。如何添加sqlsrv驱动程序,我有一个docker文件,如下所示:

FROM php:8.0.5-fpm-alpine
ADD ./php/www.conf /usr/local/etc/php-fpm.d/www.conf
RUN apk add --no-cache tzdata
ENV TZ Europe/Skopje
RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN mkdir -p /var/www/html
RUN chown laravel:laravel /var/www/html
WORKDIR /var/www/html
RUN docker-php-ext-install pdo pdo_mysql

这就是我在一个基于高山的Dockerfile上找到的安装方法:

RUN wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.5.1.1-1_amd64.apk && 
wget https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.5.1.1-1_amd64.apk && 
apk add --allow-untrusted msodbcsql17_17.5.1.1-1_amd64.apk && 
apk add --allow-untrusted mssql-tools_17.5.1.1-1_amd64.apk && 
apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev && 
pecl install pdo_sqlsrv && 
docker-php-ext-enable pdo_sqlsrv && 
apk del .phpize-deps && 
rm msodbcsql17_17.5.1.1-1_amd64.apk && 
rm mssql-tools_17.5.1.1-1_amd64.apk

它不起作用,但编译时没有任何错误。你能提供另一个码头文件解决方案吗。

我得到错误:

SQLSTATE[HY000]:[Microsoft][ODBC Driver 17 for SQL Server]协议TDS流错误

我遇到了同样的问题,发现了这个GitHub线程

因此,有一些关于在alpinelinux上安装驱动程序的Microsoft文档。

将这两个源组合在一起可以得到驱动程序的当前版本。我在Dockerfile中包含了以下几行,它们编译起来没有问题:

RUN wget https://download.microsoft.com/download/8/6/8/868e5fc4-7bfe-494d-8f9d-115cbcdb52ae/msodbcsql18_18.1.2.1-1_amd64.apk && 
wget https://download.microsoft.com/download/8/6/8/868e5fc4-7bfe-494d-8f9d-115cbcdb52ae/mssql-tools18_18.1.1.1-1_amd64.apk && 
apk add --allow-untrusted msodbcsql18_18.1.2.1-1_amd64.apk && 
apk add --allow-untrusted mssql-tools18_18.1.1.1-1_amd64.apk && 
apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc-dev && 
pecl install pdo_sqlsrv && 
docker-php-ext-enable pdo_sqlsrv && 
apk del .phpize-deps && 
rm msodbcsql18_18.1.2.1-1_amd64.apk && 
rm mssql-tools18_18.1.1.1-1_amd64.apk

最新更新