如何高效地从大型解决方案中构建多个docker映像?
我有一个大型的.NET解决方案,并希望为几个应用程序项目高效地从中构建多个docker映像 第一个项目的Dockerfile如下所示:如何高效地从大型解决方案中构建多个docker映像?,docker,dockerfile,Docker,Dockerfile,我有一个大型的.NET解决方案,并希望为几个应用程序项目高效地从中构建多个docker映像 第一个项目的Dockerfile如下所示: # Solution common build steps FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env WORKDIR /app COPY . . RUN setup-build-env.sh # Sets up additional NuGet feeds RUN dotnet restore Lin
# Solution common build steps
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . .
RUN setup-build-env.sh # Sets up additional NuGet feeds
RUN dotnet restore Linux.slnf
# Project specific build steps
RUN cd src/Category1/src/Project1 && dotnet publish -c Release -o publish
FROM mcr.microsoft.com/dotnet/runtime:3.1 AS base
WORKDIR /app
COPY --from=build-env /app/src/Category1/src/Project1/publish .
ENTRYPOINT dotnet Project1.dll
每个项目映像的运行dotnet restore Linux.slnf之前的部分都是相同的
我最担心的是大的(~400MB)COPY代码>似乎每次构建此Dockerfile时都需要重复的操作
每个要转换为容器的应用程序项目都引用解决方案中的多个项目,因此仅复制有问题的单个项目将不起作用
如何从我的大型解决方案高效地构建多个应用程序项目映像?使用公共部分构建自定义映像
共同形象
docker build-t common.image:1.0.
项目形象
显然,如果解决方案发生更改,则必须重建公共映像
如果所有项目都具有相同的Dockerfile(仅更改名称),则可以使用
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . .
RUN setup-build-env.sh # Sets up additional NuGet feeds
RUN dotnet restore Linux.slnf
FROM common.image:1.0
RUN cd src/Category1/src/Project1 && dotnet publish -c Release -o publish
FROM mcr.microsoft.com/dotnet/runtime:3.1 AS base
WORKDIR /app
COPY --from=build-env /app/src/Category1/src/Project1/publish .
ENTRYPOINT dotnet Project1.dll