Контейнер Docker может получить доступ только к MSSQL, работающему внутри другого контейнера с внутренним IP / портом - PullRequest
0 голосов
/ 29 января 2019

Я развернул очень простой док-контейнер MSSQL с помощью следующей команды запуска докера:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=NotYourBusiness" -p 2433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest

У меня установлена ​​SSMS на моем компьютере, и я могу подключиться к этому экземпляру по следующему URL-адресу:

MyHostName,2433

Я могу запустить приложение весенней загрузки со своей машины также со следующей строкой подключения:

dataSource.setJdbcUrl("jdbc:sqlserver://localhost:2433;database=SomeDatabase;");

При наличии только MSSQL в контейнере Docker мое приложение отлично работает измоя машина.

Теперь я хочу также поместить мое весеннее загрузочное приложение в контейнер.Поэтому я создал следующий файл Docker:

FROM openjdk:11-jre-slim
VOLUME /tmp
EXPOSE 8082
ADD target/tno-1.0.jar tno-1.0.jar
ENTRYPOINT ["java","-jar","tno-1.0.jar"]

Это команда сборки, которую я использую для создания образа:

docker build -f Dockerfile -t tno .

И это команда, которую я использую для сборки контейнера:

docker run -t --name tno --link sql1:mssql -p 8082:8082 tno

При использовании той же строки подключения, которая работает на моем компьютере, приложение весенней загрузки не запускается с ошибкой отказа в подключении.Я просмотрел много постов, и они указали, что термин «localhost» больше не применяется при запуске из контейнера, поскольку он относится только к этому контейнеру.Единственный способ заставить его работать - это заменить localhost: 2433 на IP-адрес контейнера: 1433.

Это вполне приемлемо, но есть ли способ для контейнера вести себя как моя машина разработки иМожно ли подключиться к другому контейнеру, как если бы соединение исходило из внешнего мира?

Спасибо

1 Ответ

0 голосов
/ 29 января 2019

Если вы можете получить доступ к базе данных из приложения, работающего в других контейнерах, попробуйте настроить URL-адрес jdbc с localhost на mssql (имя ссылки на db).

jdbc:sqlserver://mssql:2433;database=SomeDatabase;

Дайте мне знать или проверьте это как связать контейнер в докере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...