dotnet aspnetcore docker build 失敗並顯示 145 錯誤程式碼
我已經使用本教程創建了我的第一個 docker webapi 項目。
我正在使用 Windows 7(泊塢窗工具箱)。
這是我跑過的:
dotnet new webapi這是 Dockerfile:
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app RUN ["dotnet", "restore"] RUN ["dotnet", "build"] EXPOSE 5000/tcp ENV ASPNETCORE_URLS http://*:5000 ENTRYPOINT ["dotnet", "run"]這就是我創建圖像的方式:
docker build -t mydemos:aspnetcorehelloworld .這就是我創建和執行容器的方式:
docker run -d -p 8080:5000 -t mydemos:aspnetcorehelloworld我的服務作為 docker 容器成功執行。
然後,我嘗試更改 Dockerfile 以在 aspnetcore 基礎映像上工作:
FROM microsoft/dotnet:latest改為FROM microsoft/aspnetcore:1.0.1新的 Dockerfile 看起來像:
FROM microsoft/aspnetcore:1.0.1 COPY . /app WORKDIR /app RUN ["dotnet", "restore"] RUN ["dotnet", "build"] EXPOSE 5000/tcp ENV ASPNETCORE_URLS http://*:5000 ENTRYPOINT ["dotnet", "run"]現在,我嘗試使用
docker build -t mydemos:aspnetcorehelloworld1 .我得到一個錯誤。
這是建構日誌:Sending build context to Docker daemon 636.9 kB Step 1/8 : FROM microsoft/aspnetcore:1.0.1 ---> 2c7bbc508bb2 Step 2/8 : COPY . /app ---> Using cache ---> 1d5b9bd908b3 Step 3/8 : WORKDIR /app ---> Using cache ---> c1d5d091d111 Step 4/8 : RUN dotnet restore ---> Running in 8399e21caeb2 Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 The command 'dotnet restore' returned a non-zero code: 145我進入了網址,重新安裝了東西,但仍然出現錯誤。
我嘗試在同一個命令行會話中使用 dotnet cli 命令並且我成功了(
dotnet restore有效)。我試圖搜尋這個錯誤,但找不到任何解決方案。
我在這裡想念什麼?我在多個場合和測試中都收到了這個 145 錯誤。
您使用的映像僅包含 .NET Core 執行時,而不包含 SDK。嘗試來自以下儲存庫的基本映像:
https://hub.docker.com/r/microsoft/aspnetcore-build/
您的 Dockerfile 中有以下幾行:
RUN ["dotnet", "restore"] RUN ["dotnet", "build"]這意味著
dotnet restoreanddotnet build命令正在您正在使用的映像中執行。由於您使用的圖像沒有安裝 SDK,因此無法找到這些命令並且如您所見那樣失敗。我在上面連結的儲存庫中的圖像中安裝了 SDK,因此可以找到並執行dotnet restoreand命令。dotnet build使用安裝了 SDK 的基礎鏡像的替代方法是在您的開發機器上執行建構/發布過程,然後簡單地將發布的輸出複製到鏡像中。然後,您的 Dockerfile 只需要查看以下內容:
FROM microsoft/aspnetcore:1.0.1 WORKDIR /app COPY ./app . ENTRYPOINT ["dotnet", "TheNameOfYourProject.dll"]請注意,現在
dotnet在映像中執行的命令只是執行(預建構的)DLL 的命令。這僅需要執行時,而不需要 SDK。