в качестве аргумента в целевой образ:
---
image: nginx
context: .
dockerfile: .werf/nginx/nginx.Dockerfile
final: true
args:
APP_NGINX_IMAGE_TAG: {{ $app_nginx_image_tag }}
dependencies:
- image: builder
imports:
- type: ImageName
targetBuildArg: BUILDER_IMAGE_NAME
И он точно передайтся - вывел все переменные окружения в лог:
8.921673702s 8.897469077s │ │ │ nginx/dockerfile Step 6/17 : RUN env
9.022755353s 8.979686438s │ │ │ nginx/dockerfile ---> Running in 51c9a088a401
9.224573013s 9.189327987s │ │ │ nginx/dockerfile HOSTNAME=51c9a088a401
9.224583249s 9.189333538s │ │ │ nginx/dockerfile HOME=/root
9.224693788s 9.189337449s │ │ │ nginx/dockerfile TERM=xterm-256color
9.224705327s 9.189341648s │ │ │ nginx/dockerfile PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9.2248138s 9.189574476s │ │ │ nginx/dockerfile DEBIAN_FRONTEND=noninteractive
9.224826049s 9.189601073s │ │ │ nginx/dockerfile BUILDER_IMAGE_NAME=cr.example.com/my-app:8f4b5bfa8925bc00e1ecdc9882f3883963e8d88e8900136a9c56a6aa-1725360012873
9.22486342s 9.189614646s │ │ │ nginx/dockerfile PWD=/
Далее пытаюсь сокпировать фартефакты хоть куда-то:
COPY --from=${BUILDER_IMAGE_NAME} /build /tmp/
И получаю:
Error: phase build on image nginx stage dockerfile handler failed: failed to build image for stage dockerfile with digest 38e7e6890d02e6e5da9cd3a888c0275247124271eb85b88274d0d1e8: error building dockerfile with docker-server-backend: Status: invalid from flag value ${BUILDER_IMAGE_NAME}: invalid reference format: repository name (library/${BUILDER_IMAGE_NAME}) must be lowercase, Code:
Если я руками впишу имя промежуточного образа, то всё соберётся корретно и файлы действительно скопируются:
COPY --from=cr.example.com/my-app:8f4b5bfa8925bc00e1ecdc9882f3883963e8d88e8900136a9c56a6aa-1725360012873 /build /tmp/
Что я делаю не так? 🧐
Дублирую ответ тут. Приветствую! И ещё раз спасибо за обратную связь и предоставленное окружение с проблемой. Что касается использования ARG в COPY --from=${ARG}, то это ограничение docker, а не werf (moby/moby#34482). Что касается проблемы с конфликтом между args и dependencies, то тут уже всё связано с особенностями Dockerfile: ARG, которые используются во FROM, должны быть объявлены в самом начале перед всеми FROM. В любом случае спасибо за внимание и отношение к вопросу. И сорян, что так долго с ответом, дальше должно побыстрее с этим быть.
А есть информация на счёт логов которых не видно если в качестве сборщика выбрать buildkit? Docker что-то намерен делать в этом направлении?
Сегодня/завтра появятся
Обсуждают сегодня