Передача аргументов в команде --from в Dockerfile - PullRequest
0 голосов
/ 20 апреля 2020

Мой Dockerfile, как показано ниже, использует образ альпийского посланника в качестве базового изображения.

ARG envoy_image=envoyproxy/envoy-alpine:v1.14.1

FROM ${envoy_image}
COPY --from=myimage:1.1 /usr/local/myproject/myservice /usr/local/myproject/myservice

WORKDIR /usr/local/myproject/myservice
COPY abc.sh /usr/local/bin

Я копирую свой собственный двоичный файл службы под названием "myservice" в этот базовый образ, который работает нормально. Но я хочу передать свою собственную версию изображения в качестве аргумента, и если я использую параметризованный тег --from, docker compose throws error с недопустимой ошибкой ссылки. Я пробовал следующие подходы, но ни один из них не работал.

Подход 1:

ARG envoy_image=envoyproxy/envoy-alpine:v1.14.1
ARG my_image=myimage:1.1

FROM ${envoy_image}
COPY --from=${my_image} /usr/local/myproject/myservice /usr/local/myproject/myservice

WORKDIR /usr/local/myproject/myservice
COPY abc.sh /usr/local/bin

Это дает ошибку с недопустимой ссылкой.

Подход 2:

ARG envoy_image=envoyproxy/envoy-alpine:v1.14.1
ARG my_image=myimage:1.1

FROM ${envoy_image} AS release_image

FROM ${my_image} AS my_image
WORKDIR /build
COPY /usr/local/myproject/myservice .

FROM release_image
WORKDIR /usr/local/myproject/myservice

COPY --from=my_image /build/myservice /usr/local/myproject/myservice
COPY abc.sh /usr/local/bin

Однако вышеупомянутый Dockerfile также выдает ошибку, из-за которой он не может скопировать / usr / local / myproject / myservice, так как такого файла не существует, но у моего образа есть файл с именем "myservice" в каталоге / usr / local / myproject.

Любая подсказка о том, как параметризовать мое изображение?

Примечание: мне нужно передавать версию своего изображения только во время сборки, а не при запуске контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...