我看到這樣的docker檔案:
FROM mcr.microsoft.com/dotnet/sdk:3.1
WORKDIR /src
COPY ["app/WebApplication.csproj", "app/"]
RUN dotnet restore "app/WebApplication.csproj"
COPY . .
WORKDIR "/src/app"
RUN dotnet build "WebApplication.csproj" -c Release -o /app/build
我不明白為什么我們需要先做RUN dotnet restore "app/WebApplication.csproj",不是dotnet build在最后一條指令自動觸發一個dotnet restore自動?
uj5u.com熱心網友回復:
這是一個讓你的構建速度更快的性能。有時。
Docker 會保留構建層的快取,并檢查您是否已經完成了之前正在做的事情。Dockerfile 中的每個陳述句都有一個層。您擁有的 Dockerfile 假設您不會像其他代碼那樣經常更改 .csproj 檔案。
假設您已經完成了構建并且 docker 已經填充了它的快取。然后您更改一些代碼(但不是 .csproj 檔案)并再次構建。現在 Docker 可以看到,直到COPY . .一切都和你上次構建的一樣,所以它只是從快取中獲取層。所以它實際上并沒有這樣做,dotnet restore這可以節省很多時間。
當然,如果您更改 .csproj 檔案,它必須執行dotnet restore.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/468844.html
標籤:码头工人
