Can';无法从停靠的.NET核心应用程序访问SQL Server
我正在使用docker在我的VPS(Ubuntu 18.04)中部署我的web应用程序 这是我的文件Can';无法从停靠的.NET核心应用程序访问SQL Server,.net,sql-server,docker,.net,Sql Server,Docker,我正在使用docker在我的VPS(Ubuntu 18.04)中部署我的web应用程序 这是我的文件 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",
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,它工作得非常好()
它已经在用SQLite运行,但我想用SQLServer。因此,我找到了在Mac/Linux上使用SQL Server的教程:
而且效果很好。我使用以下命令运行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
就可以了
但当我把我的应用程序放在一个容器中(即使是本地的),它就无法访问我的数据库
我真的不明白为什么。我在我的Macbook上测试,我的VPS在Linux上,所以看起来你在一个容器中安装了.net core应用程序,然后你在一个单独的容器中运行数据库。如果是这样,那么您的连接字符串将无法在.net核心应用程序容器中工作。容器中的Localhost与主机的Localhost不同 您可以尝试使用主机网络,看看这是否可能是问题所在。 我记得主机联网选项在mac和windows上的Docker桌面上有一些古怪的行为。如果你在linux上,应该没问题 不过我建议你使用docker compose之类的东西 可能重复的