Как сослаться на порт хоста из контейнера docker в строке подключения к серверу MS SQL? - PullRequest
2 голосов
/ 24 апреля 2020

Оркестровка:

  • Windows Хост
  • Моя БД работает в контейнере на локальном хосте: 1444.
  • Мой API работает в контейнере на localhost: 5000 / 5001.
  • Они оба работают в сети по умолчанию (bridge).
  • Я не могу использовать пользовательскую сеть, потому что в настоящее время наше приложение ссылается на другой API, который не является в контейнере

Сначала я просто оставил строку подключения как .,1444, но понял, что контейнеру придется искать вне себя, чтобы получить host Локальный хост это нужно.

Пока я пробовал:

  • 127.0.0.1:1444
  • host.docker.internal:1444
  • 127.0.0.1,1444
  • host.docker.internal,1444
  • .,1444

Я получаю эту ошибку:

     Connection id "0HLV8EI9HSV9D", Request id "0HLV8EI9HSV9D:00000009": An unhandled exception was thrown by the application.
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)```


1 Ответ

1 голос
/ 24 апреля 2020

Самый распространенный способ сделать это - добавить --network="host" в команду docker run, тогда 127.0.0.1 в вашем docker контейнере будет указывать на ваш docker хост.

Если это вам не подходит , этот вопрос содержит множество хакерских способов достижения того же самого.

Например:

  • Отображение локального IP-псевдонима (DNS) в контейнере
  • Том, монтирующий определенные файлы для целей коммуникации
  • Включение route_loca lnet для интерфейса docker0

I Полагайте, что эта ссылка поможет вам найти решение, наиболее подходящее для вас.

...