В общем, вы не должны использовать ONBUILD вообще. То, что более поздняя строка Dockerfile FROM делает что-то иное, чем просто включение ее содержимого, нарушает принцип наименьшего удивления.
Если то, что вы пытаетесь сделать, ONBUILD - это что-то вроде инструкции RUN или ENV, семантически это не делает разница, делаете ли вы это в базовом изображении или в производном изображении. Это будет более эффективно, если вы сделаете это в базовом изображении (когда-либо, а не один раз, когда создается производное изображение).
Если вы пытаетесь ONBUILD COPY ... тогда вы ' мы пытаемся заставить файл c указать в хост-системе в точке запуска docker build
, что немного странно для потребителя. Docker * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * НЕОБАДЕТ '. Образ onbuild терпит неудачу катастрофически, если в контексте новой сборки отсутствует добавляемый ресурс. Добавление отдельного тега, как рекомендовано выше, помогает смягчить это, позволяя автору Dockerfile
сделать выбор.
Как отмечается на этой странице, если вы должны использовать ONBUILD, вы должны вызвать его в тег изображения, чтобы было понятно, когда вы создаете Dockerfile из этого изображения, происходит что-то странное. Большинство современных Docker изображений-концентраторов вообще не имеют -onbuild
вариантов, даже для таких вещей, как tomcat , которые обычно имеют исключительно формулу c использования.