У меня проблемы с подключением к базе данных SQL Server внутри док-контейнера в travis.
На моем компьютере все работает нормально, ошибка возникает только внутри 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 :::* -