我的Docker linux SQL Server今天无法在我的机器上工作。
我不确定这是防火墙(我已经全部关闭)还是Docker设置(因为我刚刚升级到最新的Docker版本),或者是Docker SQL Server问题(但在较早的同一台机器上运行正常)。
有人可以帮忙吗?
我尝试使用bash
/opt/mssql-tools/bin/sqlcmd -S localhost,8010 -U SA -P Test123!
错误:
docker撰写文件
version: '3'
services:
mssql:
network_mode: lsvc
image: microsoft/mssql-server-linux:2017-latest
container_name: mssql
hostname: mssql
volumes:
- ./.db:/var/opt/mssql/
- /var/opt/mssql/data
- ./sqlinit.sql:/scripts/sqlinit.sql
ports:
- 8010:1433
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=Test123!
command:
- /bin/bash
- -c
- |
# Launch MSSQL and send to background
/opt/mssql/bin/sqlservr &
# Wait for it to be available
echo "Waiting for MS SQL to be available"
/opt/mssql-tools/bin/sqlcmd -l 30 -S mssql -h-1 -V1 -U sa -P Test123! -Q "SET NOCOUNT ON SELECT \"YAY WE ARE UP\" , @@servername"
is_up=$$?
while [ $$is_up -ne 0 ] ; do
echo -e $$(date)
/opt/mssql-tools/bin/sqlcmd -l 30 -S mssql -h-1 -V1 -U sa -P Test123! -Q "SET NOCOUNT ON SELECT \"YAY WE ARE UP\" , @@servername"
is_up=$$?
sleep 1
done
# Run every script in /scripts
# TODO set a flag so that this is only done once on creation,
# and not every time the container runs
#for foo in /scripts/*.sql
/opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P Test123! -l 30 -e -i /scripts/sqlinit.sql
#done
# So that the container doesn't shut down, sleep this thread
sleep infinity
最佳答案
我怀疑mssql实例无法启动。
当服务器无法启动时,查看您的docker文件会陷入无限循环。我建议您限制循环中的重试次数,以便您有一个指示服务器启动失败的指示。
或者最好考虑使用 HEALTHCHECK 选项,而不是循环脚本
见https://blog.couchbase.com/docker-health-check-keeping-containers-healthy/
要解决问题,请尝试
docker logs <mssql-container-id>
如果这不能提供足够的信息,请尝试连接到容器,因为这是一台简单的机器。
docker exec -it <mssql-container-id> bash
在/ var / opt / mssql / log / errorlog中查找错误
参见https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-troubleshooting-guide?view=sql-server-ver15
关于sql-server - Docker SQL Server 2017在Linux上的连接问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59943825/