Мой 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.
Любая подсказка о том, как параметризовать мое изображение?
Примечание: мне нужно передавать версию своего изображения только во время сборки, а не при запуске контейнера.