Docker ARG и ENV: настройки при сборке и запуске — задача

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

Два времени настройки

Контекст сборки — только перечисленные выданные файлы. Меняется только Dockerfile.

Базовый образ busybox:1.36 уже доступен; внешние зависимости не нужны.

Оцениваемая native-часть:

  • Стандартная сборка создаёт /app/build.txt со строкой training; контрольный запуск читает этот файл и выводит build=training.
  • Метаданные окружения образа содержат GREETING=hello; контрольный процесс видит greeting=hello и не видит переменную BUILD_LABEL.
  • Метаданные CMD содержат отдельные элементы sh и /app/report.sh; WORKDIR равен /app. Меняется только Dockerfile.

Контрольная команда после сборки:

["sh", "-c", "! env | grep -q '^BUILD_LABEL=' && sh /app/report.sh"]

Проверки и самостоятельные действия:

  • Собрать образ из корня выданного контекста и выполнить указанную контрольную команду; ожидаются код 0 и greeting=hello, build=training.
  • Ручная часть: проверьте в Dockerfile, что BUILD_LABEL задан через ARG с default training, файл создаётся RUN из значения ARG, GREETING задан через ENV, команда запуска report.sh задана CMD в exec-форме.
  • Ручная часть: docker run --rm -e GREETING=welcome <ваш-образ> должен вывести greeting=welcome и build=training. Этот отдельный runtime override не входит в native-проверку.
  • Ручная часть: повторная сборка с --build-arg BUILD_LABEL=review должна изменить build.txt на review. Этот build-arg запуск не входит в native-проверку.

Границы проверки:

  • Native-проверка оценивает только стандартную сборку и один контрольный запуск: образ содержит ENV GREETING=hello, файл содержит training, контрольный процесс не видит BUILD_LABEL.
  • Наличие результата сборки не доказывает использование ARG или RUN: эти инструкции и связь ARG с файлом проверьте по Dockerfile и ручной пересборкой. Проверка CMD включает отдельные элементы, но не доказывает весь синтаксис инструкции.
  • Native-проверка не запускает docker run -e, не передаёт другой --build-arg и не подтверждает runtime override. Такие сценарии выполняются локально; HTTP и --env-file отрабатываются в отдельной локальной лабораторной урока. Учебные значения не являются секретами.
РешениеDockerfile

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

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

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