我正在运行一个具有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的顶部。任何帮助将不胜感激。
答案 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\""]