問題摘要:
在本地生成Docker鏡像,上傳到服務器,docker run 運行容器提示成功,但是狀態始終為Restarting,不能正常訪問。
開發環境:Windows 10 + Visual Studio 2019
目標框架:.NET Core 3.1
網站模板:ASP.NET Core Web應用程式(Web API)
服務器環境:CentOS7.7 + Docker19.03.8
問題詳細描述:
在VS專案中添加Docker支持,并成功生成了Docker鏡像,上傳至服務器,在服務器端啟動容器。
啟動成功,但運行狀態為Restarting,如下圖:

查看docker日志,發現如下報錯提示:
截圖如下:

說是缺少.NET Core SDK環境,但是如果用SDK的鏡像,就得700兆左右,如果用runtime整個鏡像才200多兆,為了節約服務器空間,我肯定是想要用runtime環境來制作鏡像檔案。
Dockerfile檔案內容如下:
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WebApp1/WebApp1.csproj", "WebApp1/"]
RUN dotnet restore "WebApp1/WebApp1.csproj"
COPY . .
WORKDIR "/src/WebApp1"
RUN dotnet build "WebApp1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApp1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApp1.dll"]
另外,將 FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base
改為 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
也嘗試過,在服務器端運行仍然報 It was not possible to find any installed .NET Core SDKs 的錯誤。
請教一下這種問題應該如何解決?
按理發布后的程式有 runtime 支持就可以了,SDK只是開發環境所需,這樣,發布的鏡像才不會體積過大。
拜請各位大神幫忙分析分析,找找解決方法,謝謝!
uj5u.com熱心網友回復:
該問題已自己解決主要原因在于run的時候,映射了主機目錄,而主機目錄沒有任何內容,所以容器讀取不到可用的dll
解決辦法:先在需要映射的主機目錄中上傳編譯好的程式代碼,再啟動容器就可以了
這種方式更新代碼非常方便,無需重新做鏡像,立即生效。
uj5u.com熱心網友回復:
docker 是個好東西uj5u.com熱心網友回復:
我也遇到這個問題了,樓主麻煩能給一個詳細點的解決方法嘛,謝謝了轉載請註明出處,本文鏈接:https://www.uj5u.com/net/239473.html
標籤:C#
