Выбор ответа Junior Docker для разработчика обновлено

Зачем .dockerignore

Вопрос

Зачем в проекте с COPY . . в Dockerfile нужен файл .dockerignore со строками node_modules, .git, .env?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Исключает файлы из контекста: сборка быстрее, в образ не попадут секреты. Перед сборкой Docker отправляет демону весь контекст.

Варианты ответа

  1. Он ускоряет запуск контейнера, уменьшая слой с файлами
  2. Исключает файлы из контекста: сборка быстрее, в образ не попадут секретыправильный ответ
  3. Без него Docker не найдёт Dockerfile в корне контекста
  4. Он скрывает файлы от docker ps и docker inspect

Разбор

Перед сборкой Docker отправляет демону весь контекст. Большие node_modules и .git замедляют это, а COPY . . скопирует в образ всё подряд, включая .env с секретами. Локальные node_modules с нативными модулями под macOS ещё и сломают приложение в Linux-контейнере.

  • На скорость запуска контейнера .dockerignore не влияет.
  • Dockerfile находится и без этого файла.
  • docker ps показывает контейнеры, а не файлы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.