Multi-stage Dockerfile: перенос готового артефакта — задача

Практическая задача Docker: Многоэтапная сборка. Условие описывает предоставленные файлы, доступный базовый образ и требования к сборке или запуску. Изменяйте только разрешённые файлы. Проверьте пути, рабочую директорию, пользователя и различие настроек сборки и запуска. Задача помогает закрепить поведение Dockerfile на конкретном проекте; объяснения и дальнейшая практика находятся в полном курсе Docker для разработчика.

Перенести только готовый артефакт

В рабочем пространстве находится файл source.txt со строкой release=stable. Допишите Dockerfile так, чтобы подготовка отчёта выполнялась в стадии builder, а финальный образ содержал готовый отчёт без учебных файлов сборки. Меняйте только Dockerfile; контекст сборки — корень выданного рабочего пространства.

Обе стадии используют доступный busybox:1.36. Скачивать пакеты и устанавливать компилятор не требуется: файл /build/compiler-only изображает вспомогательный файл сборки. Это отдельное упражнение на упаковку артефакта; локальная лабораторная урока проверяет работу с другим контекстом.

Требования:

  • Первая стадия называется builder, работает в /build и получает выданный source.txt.
  • В ней создаются готовый отчёт /out/report.txt с текстом RELEASE=STABLE и учебный файл /build/compiler-only.
  • Финальная стадия начинается заново с busybox:1.36, работает в /app и получает только готовый отчёт через COPY --from=builder.
  • В финальном контейнере существуют /app/report.txt; отсутствуют /build/compiler-only и /app/source.txt.
  • Стандартная команда читает /app/report.txt. Новый контейнер печатает RELEASE=STABLE и завершается с кодом 0.

Команда подготовки отчёта дана, чтобы не превращать упражнение в изучение текстовых утилит:

mkdir -p /out && tr a-z A-Z < source.txt > /out/report.txt && touch /build/compiler-only

Здесь tr a-z A-Z переводит латинские буквы в верхний регистр, < читает исходный файл, > сохраняет результат; touch создаёт учебный вспомогательный файл. Разместите подготовку внутри стадии сборки. Примените изученные FROM … AS builder, независимый второй FROM, WORKDIR, COPY --from и CMD.

Автопроверка собирает Dockerfile и проверяет рабочий каталог, наличие результата, отсутствие двух перечисленных файлов, метаданные команды и вывод отдельного контрольного запуска. Она не анализирует порядок инструкций и не доказывает, что вы создали вспомогательный файл именно в builder, использовали независимый второй FROM или перенесли результат именно через COPY --from. Эти требования дополнительно проверьте в своём Dockerfile. Также запустите образ без переопределения команды: контрольная команда автопроверки не заменяет проверку стандартного CMD.

РешениеDockerfile

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи