簡體   English   中英

安裝/配置 SQL 服務器 PDO PHP docker 圖像驅動程序

[英]Install / Configure SQL Server PDO driver for PHP docker image

我有一個簡單的docker文件,如下:

FROM php:7.2-apache
COPY src/ /var/www/html/

通常要為 Mongo 或 MySQL 連接安裝驅動程序,我會通過向 dockerfile 添加如下內容來實現:

docker-php-ext-install mongo

這次我想將我的 php 應用程序連接到 SQL 服務器數據庫,我知道為 php 7.x 執行此操作的最佳方法是使用 PDO 驅動程序,但是我不熟悉如何在 dockerfile 中進行配置.

我試過進行 pecl 安裝,例如添加:

RUN pecl install sqlsrv pdo_sqlsrv

然而,這失敗了,錯誤的組合似乎並沒有指出我正確的方向。

我只是在尋找一種簡單的方法來在 dockerfile 或使用 docker 運行中完成此操作。

有關附加信息,這是我收到的錯誤:

/tmp/pear/temp/sqlsrv/shared/xplat.h:30:17: fatal error: sql.h: No such file or directory
 #include <sql.h>
                 ^
compilation terminated.
Makefile:194: recipe for target 'conn.lo' failed
make: *** [conn.lo] Error 1
ERROR: `make' failed
The command '/bin/sh -c pecl install sqlsrv pdo_sqlsrv     && docker-php-ext-enable pdo_sqlsrv' returned a non-zero code: 1

謝謝大家

你有答案嗎? 我讓它使用以下步驟。 (unixodbc-dev包應該讓你通過pecl安裝。)

在Docker文件中:

RUN apt-get -y install unixodbc-dev
RUN pecl install sqlsrv pdo_sqlsrv

然后你必須添加一些更改到php.ini以啟用sqlserver。

獲取php.ini的本地副本並添加以下行:

extension=pdo_sqlsrv.so
extension=sqlsrv.so

然后將本地php.ini復制到docker鏡像中(我的文件位於本地“config”文件夾中)。

在Docker文件中:

COPY config/php.ini /usr/local/etc/php/

我為此確切目的創建了一個 docker 文件:

FROM php:7.3-apache
ENV ACCEPT_EULA=Y
RUN apt-get update && apt-get install -y gnupg2
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
RUN curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
RUN apt-get update 
RUN ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql17 unixodbc-dev 
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv pdo_sqlsrv

COPY . /var/www/html/

享受!

FROM php:7.4.0-apache
ENV ACCEPT_EULA=Y
RUN apt-get update && apt-get install -y gnupg2
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
RUN curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-relea`enter code here`se.list 
RUN apt-get update 
RUN ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql17 unixodbc-dev 
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-enable sqlsrv pdo_sqlsrv pdo pdo_mysql
COPY index.php /var/www/html/

我的 docker 配置:

###############
# MSSQL support
###############
RUN apt-get update \
    && apt-get install -y gpg unixodbc unixodbc-dev \
    && docker-php-ext-install pdo pdo_mysql \
    && pecl install sqlsrv pdo_sqlsrv

# ------------ Install MS SQL client deps ------------ #
# adding custom MS repository
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list

# install SQL Server drivers and tools
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN /bin/bash -c "source ~/.bashrc"

# Debian 9 msodbcsql : https://packages.microsoft.com/debian/9/prod/pool/main/m/msodbcsql17/
RUN wget https://packages.microsoft.com/debian/9/prod/pool/main/m/msodbcsql17/msodbcsql17_17.4.2.1-1_amd64.deb
RUN ACCEPT_EULA=Y dpkg -i msodbcsql17_17.4.2.1-1_amd64.deb

RUN apt-get -y install locales
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
RUN locale-gen

RUN echo "extension=sqlsrv.so" >> /usr/local/etc/php/conf.d/docker-php-ext-sqlsrv.ini
RUN echo "extension=pdo_sqlsrv.so" >> /usr/local/etc/php/conf.d/docker-php-ext-pdo-sqlsrv.ini
# -------------- END MSSQL -------------------------------- #

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM