Docker:父映像的已安装组件在运行容器后消失

问题描述 投票:0回答:1

我想制作一个包含Asp.net核心应用和其他组件的docker映像。我决定拉出debian映像,安装必要的组件(在本例中为星号系统),然后提交并将其作为我自己的映像推送,我们称之为A。在Asp.net核心应用程序中,我将A用作ockefile中的父组件并构建图像,我们将其称为B。

但是当我将B作为容器运行时,找不到在映像A中已经安装的组件。

这是我的dockerfile:

FROM vocaoson7/asterisk:king
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update

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

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
asp.net docker dockerfile asterisk
1个回答
0
投票

[您正在尝试使用多阶段构建,并且它的工作方式是,最终映像由Dockerfile中的最后一个FROM命令定义,其后的内容均由该命令定义。

因此,对于您的情况,您将在最终映像中找到的是aspnet:3.1安装(来自用于运行时阶段的基本映像)和一个/ app文件夹,其中包含在out目录中生成的构建步骤。

您最先的FROM对最终图像没有任何影响。

© www.soinside.com 2019 - 2024. All rights reserved.