Ошибка формата строки подключения SQL в Docker - PullRequest
0 голосов
/ 06 июня 2019

Я использую контейнер Docker с удостоверением gMSA для подключения к SQL Server через проверку подлинности Windows. Я подтвердил, что идентификатор 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"]

Запуск проверки докера на контейнере выглядит так, как будто параметры CMD анализируются правильно, но я все еще получаю сообщение об ошибке. Строки подключения работают без проблем за пределами Docker.

Я пытался окружить строки подключения символом обратной черты `, одинарных кавычек, двойных кавычек и косой черты. Я также попытался передать строки как переменные ENV, а не как параметры CMD. Я также попытался добавить директиву парсера, такую ​​как

# escape=`

к началу моего Dockerfile. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 июня 2019

Для тех, у кого может быть похожая проблема, я определил, как избежать внутренних кавычек, используя символ \. Правильно отформатированные строки подключения 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\""]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...