Asp.net
無法在本地 Docker 容器上訪問 Asp.Net Core
我在 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:5000command 與
-pcommand 的效果不同。我也沒有使用 -P (大寫)取得真正的成功。2016 年 8 月 28 日編輯:
需要注意的一件事。如果您使用帶有 -d(分離)模式的 docker compose,該命令可能需要一段時間
dotnet run才能啟動伺服器。在執行完命令(以及之前的任何其他命令)之前,您將收到ERR_EMPTY_RESPONSE.Chrome