我在Dockerfile中有以下几行:
ARG SOMEARGUMENT
COPY --from=$SOMEARGUMENT /some/path/goes/here
其中SOMEARGUMENT可以是“一些/存储库:1.1.1”或“一些/存储库:2.2.2”
但是在尝试构建时,总是会出现错误:
invalid reference format: repository name must be lowercase
很明显,构建图像时传递的参数(即SOMEARGUMENT)没有得到解决。
是否真的可以在Dockerfile中执行类似的操作?
谢谢。
答案 0 :(得分:1)
由于您始终基于相同的存储库,因此这样做更干净。
ARG VERSION
FROM some/repository:${VERSION} as builder
RUN mkdir test
FROM scratch
COPY --from=builder /test /
来源:
https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
答案 1 :(得分:1)
扩大Siyu答案。
可能的解决方法如下:
Dockerfile:
ARG SOMEARGUMENT
ARG SOMEVERSION=latest
FROM ${SOMEARGUMENT}:${SOMEVERSION} as thebase
RUN echo "This is a test" > /test.txt
FROM alpine:latest
COPY --from=thebase /test.txt /success.txt
CMD cat /success.txt
构建命令:
docker build --build-arg SOMEARGUMENT=alpine --tag test .