首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到travis中docker内的SQL Server数据库

无法连接到travis中docker内的SQL Server数据库
EN

Stack Overflow用户
提问于 2018-12-17 21:35:08
回答 1查看 249关注 0票数 2

在travis中连接到docker容器内的SQL Server数据库时遇到问题。

在我的机器上一切都运行得很好,错误只发生在travis内部,不知道为什么。

Dockerfile:

代码语言:javascript
复制
from microsoft/mssql-server-linux:2017-latest

ENV ACCEPT_EULA=Y

ENV MSSQL_SA_PASSWORD=Passw0rd

COPY hermes.bak /var/opt/mssql/backup/hermes.bak

CMD ["/opt/mssql/bin/sqlservr"]

.travis.yml:

代码语言:javascript
复制
dist: trusty

services:
  - docker

before_install:
  - docker build -t hermes-db .
  - docker run -d -p 127.0.0.1:1430:1433 --name hermes-db hermes-db
  - docker exec hermes-db /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Passw0rd' -Q "RESTORE DATABASE [lbc_refs] FROM DISK = N'/var/opt/mssql/backup/hermes.bak' WITH MOVE 'lbc_refs' TO '/var/opt/mssql/data/lbc_refs_data.mdf', MOVE 'lbc_refs_log' TO '/var/opt/mssql/data/lbc_refs_log.ldf'"

script:
  - docker ps | grep -q hermes-db

结果是:

代码语言:javascript
复制
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2AF9.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

当我运行netstat -tulpn时:

代码语言:javascript
复制
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:1430          0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      -               
udp        0      0 0.0.0.0:11211           0.0.0.0:*                           -               
udp        0      0 172.18.0.1:123          0.0.0.0:*                           -               
udp        0      0 172.17.0.5:123          0.0.0.0:*                           -               
udp        0      0 127.0.0.1:123           0.0.0.0:*                           -               
udp        0      0 0.0.0.0:123             0.0.0.0:*                           -               
udp6       0      0 :::123                  :::*                                -               
EN

回答 1

Stack Overflow用户

发布于 2020-03-18 05:12:24

我在使用Travis CI上的SQL Server的多租户应用程序上遇到了同样的问题。

这是最终的构建:https://travis-ci.org/github/ron190/jsql-injection/builds/663658271

经过多次尝试和错误,我成功地按照以下规则稳定了端口1433上的连接:

在使用符合sqlcmd

  • Use密码策略的sqlcmd

  • Use密码测试第一次连接之前,
  • 使用镜像文件而不是Dockerfile中的2017-latest
  • EXPOSE 1434 14331434 2019-GDR1-ubuntu-16.04 1434 sqlcmd1433 for Hibernate on C3P0
  • Add sleep 10s <代码>H217<代码>F218

关于我在travis-ci.community上调试的一些细节。

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

https://stackoverflow.com/questions/53816359

复制
相关文章

相似问题

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