首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要一个docker图像,可以连接到外部的MSSQL数据库与php

我需要一个docker图像,可以连接到外部的MSSQL数据库与php
EN

Stack Overflow用户
提问于 2021-07-02 02:04:27
回答 2查看 150关注 0票数 0

我需要一个码头图像,可以连接到外部的MSSQL数据库时,执行PHP脚本。我已经创建了一个数据库,但我只能通过tsql CLI连接到数据库。我想它使用了Freetds。但是当我尝试使用php脚本时,我遇到一个错误,告诉我php找不到PDO库……有人能帮我找出我错过了什么吗?

下面是我使用的图片:

代码语言:javascript
复制
FROM php:7.4-cli

RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
  unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc

ADD freetds.conf /etc/freetds/freetds.conf
ADD locales.conf /etc/freetds/locales.conf

CMD ["/bin/bash"]

PHP脚本如下:

代码语言:javascript
复制
try {
    $conn = new PDO("dblib:host={$sql_host};dbname={$sql_dbnm}", "$sql_user", "$sql_pswd");
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch (Exception $e) {
    var_dump($e);
    die(print_r($e->getMessage()));
}

$tsql = "SELECT field FROM table";
$getResults = $conn->prepare($tsql);
$getResults->execute();

$results = $getResults->fetchAll(PDO::FETCH_BOTH);
foreach($results as $row){
    echo "{$row['field']}\n";
}

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 22:38:00

我找到了一种方法。下面是我的Dockerfile的内容:

代码语言:javascript
复制
FROM php:7.3

# Update packages
RUN apt-get update

# Install PHP and composer dependencies
RUN apt-get install gnupg -qq git wget curl libmcrypt-dev libjpeg-dev libpng-dev libfreetype6-dev libbz2-dev libzip-dev

# Clear out the local repository of retrieved package files
RUN apt-get clean

# Install needed extensions
# Here you can install any other extension that you need during the test and deployment process
RUN docker-php-ext-install pdo_mysql zip

# adding custom MS repository
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
# install SQL Server drivers
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y unixodbc-dev msodbcsql17
RUN wget http://pecl.php.net/get/sqlsrv-5.9.0.tgz
RUN pear install sqlsrv-5.9.0.tgz
RUN docker-php-ext-enable sqlsrv

RUN wget http://pecl.php.net/get/pdo_sqlsrv-5.9.0.tgz
RUN pear install pdo_sqlsrv-5.9.0.tgz
RUN docker-php-ext-enable pdo_sqlsrv
RUN echo "extension= pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
RUN echo "extension= sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
票数 0
EN

Stack Overflow用户

发布于 2021-07-15 00:24:28

一种更简单的方法是使用install-php-extensions:它可以让你用一行代码安装大量的PHP扩展:

代码语言:javascript
复制
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/

RUN install-php-extensions pdo_sqlsrv sqlsrv

有关https://github.com/mlocati/docker-php-extension-installer的更多详细信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68214992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档