【发布时间】:2018-05-14 06:02:55
【问题描述】:
我正在尝试从我的计算机上托管的 docker 容器连接到我的远程 SQL 服务器。
但只是收到以下错误:
在建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:登录超时已过期。
但是,如果我尝试从主机上的 SQL Server Management Studio 连接到我的 SQL Server,则一切正常。 另请注意,2 周前,一切都在 docker 容器内正常工作。
这是我的 docker compose 文件和安装了 SQL 驱动程序的 docker 文件:
撰写:
version: '3'
services:
nginx:
image: nginx:1.10
volumes:
- ./:/var/www
- .docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf
ports:
- ${DOCKER_IP}80:80
links:
- php
networks:
- app-net
php:
build:
context: ./
dockerfile: .docker/php/DockerFile
volumes:
- ./:/var/www
networks:
- app-net
networks:
app-net:
driver: bridge
Docker 文件
FROM phpdockerio/php71-fpm:latest
# Install selected extensions and other stuff
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && apt-get -y --no-install-recommends install \
php7.1-mysql \
php7.1-mbstring \
php7.1-gd \
php7.1-soap \
php7.1-dev \
apt-transport-https \
git \
ssh \
curl \
php-pear \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install Composer
RUN cd /usr/src
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Install MSSQL extention
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get -y install msodbcsql mssql-tools g++ unixodbc-dev make
RUN pear config-set php_ini `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` system
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN echo "extension=sqlsrv.so" >> /etc/php/7.1/fpm/php.ini
RUN echo "extension=pdo_sqlsrv.so" >> /etc/php/7.1/fpm/php.ini
# Fixed locals for MSSQL extention
RUN apt-get install -y locales
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
RUN locale-gen
WORKDIR /var/www
在 docker 容器中,我无法 ping SQL 服务器。所以对我来说,我听起来像是一个网络问题,但我找不到解决方案。
请注意,SQL 服务器本地托管在办公室的服务器上。
更新/暂时解决 将 windows 的 dokcer 降级到 18.03.0-CE 后,一切都按预期工作。
【问题讨论】:
-
这些文件中没有连接信息:服务器名称或地址、端口、实例名称、数据库等。可能你没有配置MSSQL扩展。该错误表示客户端无法找到服务器。
-
您的主机上运行的 os 和 docker 版本是什么?
-
您似乎面临类似this的问题
-
抱歉回复晚了,我已经放长假了。 MSSQL 扩展配置正确,SQL 服务器信息正确。我正在运行 Windows 10 作为主机。
标签: sql-server docker networking