.Net Core WebApi 拒绝 Docker 容器中的连接

Dan*_*rps 5 asp.net-web-api docker .net-core asp.net-core

我正在尝试使用我在 dotnet core 中编写的小型 WebApi 来运行 Docker。

Api 似乎工作正常,因为当我使用dotnet run它运行它时,它正常启动并且可以在端口 5000 上访问。但是当我在 Docker 容器中运行它时,它会启动,但我无法在暴露/映射的端口上访问它。我正在使用 VirtualBox 在 Windows 10 上运行 Docker。

我的 Dockerfile 看起来像这样:

FROM microsoft/aspnetcore-build:latest
COPY . /app
WORKDIR /app
RUN dotnet restore
EXPOSE 5000
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)

我正在像这样构建dontainer:

docker build -t api-test:v0 .
Run Code Online (Sandbox Code Playgroud)

并使用以下命令运行它:

docker run -p 5000:5000 api-test:v0
Run Code Online (Sandbox Code Playgroud)

运行命令的输出是:

Hosting environment: Production
Content root path: /app
Now listening on: http://localhost:5000
Run Code Online (Sandbox Code Playgroud)

我还尝试了不同的 URL 绑定方法:

  • 作为http://+:5000, http://0.0.0.0:5000, http://localhost:5000, ...
  • 通过 CLI 参数--urls/--server.urls

但没有成功。有没有人看到我做错了什么或错过了什么?

BMi*_*tch 1

Now listening on: http://localhost:5000
Run Code Online (Sandbox Code Playgroud)

绑定到 localhost 将不适用于您的场景。您需要将应用程序绑定到 0.0.0.0 才能使 docker 端口转发正常工作。完成此操作后,您应该能够访问虚拟机 IP、端口 5000 上的应用程序