【发布时间】:2023-04-04 12:35:01
【问题描述】:
我无法连接到 travis 中 docker 容器内的 SQL Server 数据库。
在我的机器上一切正常,错误只发生在 travis 内部,不知道为什么。
Dockerfile:
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:
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
结束:
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 时:
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 :::* -
【问题讨论】:
-
我想知道 - 用于
docker build和hermes-db图像的文件是否可能在.gitignore中? -
不,gitignore 是空的,在 20 次构建中,2 次工作,18 次失败,出现此错误,当我重建工作的人时,他们失败了。
标签: sql-server docker travis-ci