Я новичок в Docker и запутался в нескольких вещах. У меня также есть несколько запросов. Пожалуйста, найдите их ниже. Я был бы рад, если бы эти запросы были решены.
Вопрос 1: В многоступенчатых сборках, как docker идентифицирует артефакты стадии? Поскольку я видел во многих статьях, люди говорят, что COPY --from=0 src dest
скопирует артефакты с последней стадии сборки. Я имею в виду, где мы явно определили, что вам нужно скопировать артефакты из этой папки? Что определяет build output
/ build artifact
сцены?
# Stage 1
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app
# Stage 2
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "Core3Api.dll"]
- Q2 - Копирует ли
COPY --from=build src dest
файлы из предыдущей сборки или изображения? - Q3 - Обычно копирование имеет два параметра: один является источником, а другой - местом назначения. Выше у нас есть три параметра,
--from=build
src
dest
. Как работает эта копия? - Q4 - Нужно ли устанавливать
WORKDIR
на каждом этапе сборки? Потому что я думаю, что каждый этап сборки выполняется в новом изолированном контексте? ИЛИ он использует тот же контекст? - Q5 - Где Docker хранит образ предыдущей сборки при переходе на следующий этап?
Все мои вопросы взаимосвязаны, поэтому я объединил всех в одну.