Не могу получить доступ к SQL Server из моего приложения .NET Core - PullRequest
0 голосов
/ 12 июня 2019

Я использую Docker для развертывания моего веб-приложения в моем VPS (Ubuntu 18.04).

Вот мой Dockerfile

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app

RUN dotnet restore
RUN dotnet build

EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENV ASPNETCORE_ENVIRONMENT docker

ENTRYPOINT [ "dotnet", "watch", "run", "--no-restore", "--urls", "http://*:5000"]

Я также использую Nginx, и он отлично работает (http://www.onserassure.com)

Он уже работает с SQLite, но я хотел использовать SQL Server. Поэтому я нашел этот учебник по использованию SQL Server в Mac / Linux: https://www.phillipsj.net/posts/working-with-sql-server-on-linux-for-dotnet-development И это работало нормально. Я запустил свой контейнер SQL Server с:

 docker run -d --name sql_server_demo -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=XXXXX' -p 1433:1433 microsoft/mssql-server-linux

И использовал эту строку подключения:

"Server=localhost;Database=Movies;User Id=sa;Password=XXXXXXX;"

Так что все работало нормально с простым dotnet run на локальном

Но когда я помещаю свое приложение в контейнер (даже локальный), оно не может получить доступ к моей базе данных ...

Я не очень понимаю, почему. Я тестирую на своем Macbook, и мой VPS работает на Linux

1 Ответ

1 голос
/ 12 июня 2019

Похоже, у вас есть основное приложение .net в контейнере, а затем вы запускаете базу данных в отдельном контейнере.Если это так, то строка подключения не будет работать в контейнере основного приложения .net.Localhost внутри контейнера не совпадает с localhost хоста.

Вы можете попытаться использовать хост-сеть, чтобы увидеть, возможно, это проблема.Я помню, что вариант с сетевым хостом ведет себя довольно забавно с Docker Desktop на Mac и Windows.Должно быть хорошо, если вы используете Linux.

Я бы порекомендовал вам использовать что-то вроде docker-compose.

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