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 отрабатываются в отдельной локальной лабораторной урока. Учебные значения не являются секретами.
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
