EXPOSE и ONBUILD в Dockerfile выполняют разные задачи:
- EXPOSE определяет порты, на которых контейнер регистрирует соединения. 1 Например, образ, содержащий веб-сервер Apache, должен использовать EXPOSE 80, а образ, содержащий MongoDB — EXPOSE 27017. 1
- ONBUILD добавляет в образ триггер, запускаемый при использовании данного образа в качестве основы для другой сборки. 1 Например, когда исходный код, нужный для образа ещё не доступен, но требует для работы конкретного окружения. 4
Таким образом, EXPOSE указывает, какие порты должны быть открыты, а ONBUILD — регистрирует заранее определённые инструкции для запуска позже, на следующей стадии сборки. 23