Цель сборки в Docker
Цель сборки останавливает файл шагов на именованном этапе и не доводит последний. Так можно собрать образ только с инструментами, не выполняя финальные строки.
Тот же рецепт с двумя
FROM: первый этап
build снова пишет
tool в /tool,
второй копирует файл
и задаёт CMD.
Файл шагов без изменений:
FROM alpine AS build
RUN echo tool > /tool
FROM alpine
COPY --from=build /tool /tool
CMD ["cat", "/tool"]
Флаг --target у
docker build указывает
имя этапа build.
Метка tools описывает
промежуточный образ, а не
финальный с CMD
последнего блока.
Сборка до первого этапа:
docker build --target build -t tools .
Запуск образа tools
не обязан иметь файл
из второго этапа: это
снимок промежуточного шага.
Содержимое /tool
проверим отдельной командой
внутри контейнера; на экране
будет tool из первого
этапа, хотя финальный блок
с копированием не выполнялся:
docker run --rm tools cat /tool
Соберите метку half только до этапа build из двухэтапного рецепта с файлом /mark.txt и словом mark.
Запустите half с чтением /mark.txt и убедитесь, что финальный этап рецепта для этой метки не выполнялся.