Назовите этап для каждого аргумента сборки, используя Dockerfile с многоступенчатой сборкой

#dockerfile #docker-multi-stage-build

#dockerfile #docker-многоступенчатая сборка

Вопрос:

Есть ли возможность назвать этап сборки? Я ищу что-то вроде следующего примера:

 ARG NAME

FROM python:3.7-alpine as modul-${NAME}
# ...
  

Если я попробую этот пример, возникает эта ошибка:

 Error response from daemon: Dockerfile parse error line 5: invalid name for build stage: "modul-${NAME}", name can't start with a number or contain symbols
  

Я также попытался использовать аргумент как tag ( modul:${NAME} ) с тем же результатом.

Ответ №1:

Вы можете сделать это с помощью BuildKit, для которого требуется docker 18.09 . (https://docs.docker.com/develop/develop-images/build_enhancements /)

Все, что вам нужно сделать, это установить переменную env перед сборкой:

DOCKER_BUILDKIT=1 docker build -t whatever .

Я не думаю, что это возможно без BuildKit.

Комментарии:

1. Я использовал Docker версии 20.10.21, и это, похоже, не сработало.

2. Это не работает: этот ответ не должен быть признан принятым.