【发布时间】:2019-04-27 04:46:51
【问题描述】:
我有 2 个 docker 容器在同一虚拟机上运行(VMWare 工作站 12 Player 上的 Ubuntu 服务器 18.04)。第一个是 MySql Container,它在端口 3306 上运行,第二个是 asp.net core (v2.0) web api(vm 上的端口 5000 并通过端口 80 通过 nginx 导出到外部)。我的虚拟机 api 是 192.168.20.197
我在 web api 项目上的连接字符串是:optionsBuilder.UseMySQL("server=localhost;port=3306;database=mydatabase;user=root;CharSet=utf8");
我的docker文件内容是
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DemoMySql.dll"]
我尝试向 VM 上的 web api 发出 HTTP 请求,但是当我尝试与数据库交互时服务器响应错误(500)(当我让它返回示例字符串时,web api 仍然正常工作,例如192.168.20.197/api/values/samplestring)。那么如何将 web api 连接到不同容器上的 mysql 呢?
p/s: 对不起我的语法不好
【问题讨论】:
-
您能提供您的
docker run命令和/或您的docker-compose.yml文件吗?你用什么来运行你的容器。您将连接字符串指向本地主机,并且在容器中本地主机是容器,而不是运行容器的计算机。 -
我将我的 localhost 更改为 vm ip 地址,它的工作:) thks
标签: mysql .net docker .net-core asp.net-core-webapi