php - 使用 Docker 使用 dblib 将 php 5.5 连接到 MSSQL
问题描述
我有一个获取 php5.5 映像的 Dockerfile,然后安装了几个扩展(freetds-dev sendmail libpng-dev zlib1g-dev unixodbc tdsodbc nano)
。然后添加一个 freetds.conf 和一个 apache-default conf。
然后我有一个构建 dockerfile 的 docker-composer.yml,但也完成了microsoft/mssql-server-linux
图像。
我下载了 MSSQL,我可以通过 PHPStorm 连接它,但我无法使用 PHP 连接它。
这是我的连接字符串:
$dsn = "dblib:host=127.0.0.1:1433;dbname=table;";
$pdo = new PDO($dsn, "sa", "yourStrong(!)Password", [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_STRINGIFY_FETCHES => true,
]);
它不会连接,并给我错误
SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)' in /var/www/html
.
我确实知道要使用的驱动程序安装正确,因为我在使用时可以找到它们phpinfo();
。
这是在我的 freetds.conf
[mssql]
host = 127.0.0.1
port = 1433
tds version = 7.0
这是我的码头工人撰写:
version: "3"
services:
php:
container_name: php55
build: ./php
links:
- mssql
ports:
- "8086:80"
- "8089:443"
volumes:
- ./www:/var/www/html
mssql:
container_name: mssql
image: microsoft/mssql-server-linux:latest
ports:
- "1433:1433"
environment:
ACCEPT_EULA: Y
SA_PASSWORD: yourStrong(!)Password
我能错过什么?
解决方案
问题在于网络。仅使用链接不起作用。所以我创建了一个新网络,docker network create simple-network
然后将我的两个容器都添加到该网络中。然后我跑去docker inspect network simple-network
获取我的 MSSQL 数据库的 IP。所以我得到了IP,并将其用作主机。
我认为您可以通过 docker-composer 中的网络来做到这一点,这可能要好得多。
推荐阅读
- c# - 使用 is 关键字检查可空对象是否不为空
- react-native - React-Native-Admob 插页式广告和奖励广告未按预期显示
- docker - 如何使用容器入口点参数调用 gcloud 计算实例 create-with-container
- recursion - 从 javascript 对象创建树结构
- python - 无法在 PyCharm 中安装 Pandas
- excel - 使用从值范围派生的数据集绘制 xy 图表
- delphi - 尝试在控制台应用程序中使用 JclShell 创建 ShellLink 快捷方式失败
- c - 将十进制转换为二进制而不使用数组
- javascript - 文本到语音 api 上的错误:ReferenceError:未定义语音合成
- javascript - 小写第一个字母