Как отобразится на конечном Docker image наличие двух Dockerfile с разным количеством команд

«Как отобразится на конечном Docker image наличие двух Dockerfile с разным количеством команд» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Docker важен только последний Dockerfile при сборке (если не указан другой через -f). Наличие нескольких файлов не влияет на образ, если они не используются.

Пример:

.
├── Dockerfile.simple
├── Dockerfile.extended
└── main.go

При сборке docker build . будет использован Dockerfile (если есть), а другие игнорируются. Чтобы использовать конкретный файл:

docker build -f Dockerfile.extended .

Ключевые моменты:

  • Docker ищет файл с именем Dockerfile по умолчанию
  • Можно указать любой файл через -f
  • Одновременно используется только один Dockerfile
  • Остальные файлы просто лежат в директории без влияния на сборку