Asp.net

無法在本地 Docker 容器上訪問 Asp.Net Core

  • May 17, 2020

我在 asp.net core 中創建了一個應用程序,並創建了一個 dockerfile 來生成本地圖像並執行它。

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"]

然後,我使用以下命令建構了我的圖像

docker build -t jedidocker/first .

然後,我使用以下命令創建了一個容器

docker run -t -d -p 5000:5000 jedidocker/first

但是當我在我的主機瀏覽器中執行以下 url

http://localhost:5000/

我有一個ERR_EMPTY_RESPONSE

是網路問題嗎?我該如何解決?

PS:我的windows版本是10.0.10586

我遇到了同樣的問題並找到了解決方案。您將需要更改預設偵聽主機名。預設情況下,應用程序將偵聽 localhost,忽略來自容器外部的任何傳入請求。更改您的程式碼program.cs以監聽所有來電:

public class Program
{
   public static void Main(string[] args)
   {
       var host = new WebHostBuilder()
           .UseKestrel()
           .UseContentRoot(Directory.GetCurrentDirectory())
           .UseUrls("http://*:5000")
           .UseIISIntegration()
           .UseStartup<Startup>()
           .Build();

       host.Run();
   }
}

更多資訊:

https://medium.com/trafi-tech-beat/running-net-core-on-docker-c438889eb5a#.hwhoak2c0

-p確保您正在執行帶有埠綁定標誌的容器。

docker run -p 5000:5000 <containerid>

在撰寫本文時,似乎

EXPOSE 5000:5000

command 與-pcommand 的效果不同。我也沒有使用 -P (大寫)取得真正的成功。

2016 年 8 月 28 日編輯:

需要注意的一件事。如果您使用帶有 -d(分離)模式的 docker compose,該命令可能需要一段時間dotnet run才能啟動伺服器。在執行完命令(以及之前的任何其他命令)之前,您將收到ERR_EMPTY_RESPONSE.Chrome

引用自:https://stackoverflow.com/questions/39045735