Docker中的SQL连接字符串格式错误

时间:2019-06-06 19:39:23

标签: sql-server windows docker

我正在运行一个具有gMSA标识的Docker容器,以通过Windows身份验证连接到SQL Server。我确认gMSA身份在容器中正常运行,但是我收到一个SQL连接字符串格式错误:

“初始化字符串的格式不符合从索引0开始的规范。”

我的Dockerfile看起来像这样:

FROM microsoft/dotnet:2.2-runtime-nanoserver-sac2016
COPY . .
ENTRYPOINT ["dotnet", "Daemon.dll"]
CMD ["EventConfig:MqHostName=10.23.2.1", "ConnectionStrings:TestDb1=Data Source=10.23.2.1;Initial Catalog=Events;Integrated Security=true", "ConnectionStrings:TestDb2=Data Source=10.23.2.1;Initial Catalog=Notifications;Integrated Security=true", "ConnectionStrings:TestDb3=Data Source=10.23.2.1;Initial Catalog=TESTDB;Integrated Security=true"]

在容器上运行docker inspect似乎正确解析了CMD参数,但是我仍然收到错误。连接字符串可以在Docker外部正常工作。

我尝试用反引号`,单引号,双引号和斜杠将连接字符串括起来。我也尝试过将字符串作为ENV变量而不是CMD参数传递。我也尝试添加解析器指令,例如

# escape=`

到我的Dockerfile的顶部。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于可能遇到类似问题的任何人,我确定了如何使用\字符对内引号进行转义。格式正确的Dockerfile连接字符串如下所示:

CMD ["EventConfig:MqHostName=10.23.2.1", "ConnectionStrings:TestDb1\"=Data Source=10.23.2.1;Initial Catalog=Events;Integrated Security=true\"", "ConnectionStrings:TestDb2=\"Data Source=10.23.2.1;Initial Catalog=Notifications;Integrated Security=true\"", "ConnectionStrings:TestDb3=\"Data Source=10.23.2.1;Initial Catalog=TESTDB;Integrated Security=true\""]