Чем Dockerfile отличается от Docker Compose?

Dockerfile описывает сборку образа, а Docker Compose — сервисы приложения и параметры их совместного запуска. Эти инструменты решают разные, дополняющие друг друга задачи.

Короткий ответ

Что ответить на собеседовании

Dockerfile содержит инструкции для сборки образа: базовый образ, зависимости, файлы и команду запуска. Docker Compose описывает приложение из сервисов, их образы или сборку, сети, тома, порты и переменные окружения. Compose может использовать Dockerfile через параметр build, поэтому это не взаимозаменяемые инструменты.

Подробный разбор

Ответ с пояснениями

Dockerfile описывает, как собрать образ контейнера. В нем выбирают базовый образ через FROM, устанавливают зависимости, копируют файлы приложения и задают рабочий каталог. Инструкции CMD и ENTRYPOINT определяют поведение по умолчанию при запуске контейнера. Результат сборки — образ, из которого можно создавать контейнеры.

Docker Compose описывает, как запускать сервисы приложения вместе. В YAML-файле перечисляют сервисы, используемые образы, параметры сборки, переменные окружения, публикацию портов, сети и тома. Например, приложение может состоять из веб-сервиса, базы данных и кэша. Для базы можно взять готовый образ, а веб-сервис собрать из собственного Dockerfile, указав build.

Короткое различие: Dockerfile отвечает на вопрос «что находится в образе и как его собрать», Compose — «какие сервисы нужны и с какими настройками их запустить». Compose полезен и для одного сервиса, если нужно сохранить его параметры запуска в файле.

Важно не путать объявление порта через EXPOSE с публикацией порта на хосте: само по себе EXPOSE внешний доступ не открывает. Также порядок запуска сервисов не гарантирует готовность приложения внутри контейнера; проверки здоровья и ожидание готовности настраивают отдельно.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку