Что делать, если перестал собираться Dockerfile?

«Что делать, если перестал собираться Dockerfile?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я бы последовательно проверил следующие моменты:

  1. Логи сборки: Первым делом смотрю на вывод docker build. Ошибка обычно указывает на конкретный шаг (например, RUN или COPY).
  2. Контекст сборки: Убеждаюсь, что все необходимые файлы находятся в контексте сборки и не исключены файлом .dockerignore.
  3. Кеш Docker: Пробую собрать с флагом --no-cache, чтобы исключить проблему с повреждённым или устаревшим кешем слоёв.
    docker build --no-cache -t myapp:latest .
  4. Базовый образ: Проверяю, доступен ли образ, указанный в инструкции FROM, и не изменился ли его тег или содержимое.
  5. Установка зависимостей: Если в Dockerfile есть RUN apt-get update или RUN pip install, проверяю доступность репозиториев и конкретных версий пакетов. Иногда помогает явная фиксация версий.
  6. Права доступа: Для инструкций COPY и ADD проверяю права на файлы в хостовой системе.

В моей практике чаще всего проблема оказывается в изменении внешнего зависимого ресурса (например, пакет в репозитории был обновлён или удалён) или в том, что нужный файл не попал в контекст сборки из-за .dockerignore.