dockerfile cache 缓存

在实际构建过程中,我们为了让构建的速度变快是需要考虑缓存的。 比如 dotnet restore. 还有 npm install.

dotnet restore是依赖于整个解决方案和它的项目文件。 所以正常的做法是我们先拷贝所有的项目文件, 然后跑 dotnet restore 接下来再拷贝所有的文件

目前COPY 还没有支持 拷贝 *.csproj 到相应目录的方式。所以我们得一个一个来拷

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY ./Malema.Web/*.csproj ./Malema.Web/
COPY ./Malema.Interfaces/*.csproj ./Malema.Interfaces/
COPY ./Malema.Infrastructure/*.csproj ./Malema.Infrastructure/

RUN dotnet restore ./Malema.Web/Malema.Web.csproj

COPY . .
# RUN cd xxx.Tests && dotnet test 

RUN cd Malema.Web && dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
#FROM mcr.microsoft.com/dotnet/core/sdk:3.1
WORKDIR /app
COPY --from=build-env /app/Malema.Web/out .
# 如果没有写的话会是5000
ENV ASPNETCORE_URLS=http://+:80 
#设置时间为中国上海,默认为UTC时间
ENV TZ Asia/Shanghai
EXPOSE 80

ENTRYPOINT [ "dotnet","Malema.Web.dll" ]

上面的docker file我们也可以看到我们是分成了两步。 这样最后的镜像只会有一层。(体积会比较小)。

最近更新的
...