考虑以下 docker 构建上下文:
src/
hi
there
bye
和 Dockerfile:
FROM ubuntu
RUN mkdir test
COPY src/hi src/there test/
这工作得很好,但我想制作文件列表以复制
ARG
,例如:FROM ubuntu
ARG files
RUN mkdir test
COPY ${files} test/
不幸的是,使用
docker build --build-arg files='src/hi src/there' some_path
调用失败,因为它将 src/hi src/there
视为单个项目。如何将 files
参数“扩展”到多个文件中进行复制?一时兴起,我尝试多次指定文件 arg:
docker build --build-arg files='src/hi' --build-arg files='src/there' some_path
,但这只会复制“那里”。 最佳答案
考虑到 Dockerfile format 提到的论点,这似乎不太可能:
这不仅限于 RUN
。
然而, COPY
还包括:
在你的情况下它不起作用。
保留 multi-stage builds approach
src
(所有文件夹)RUN find pip ${files} -maxdepth 1 -mindepth 1 -print | xargs rm -rf
您可以将要保留的文件夹作为一个参数传递
docker build --build-arg="files=! -path "src/hi" ! -path "src/there"" .
请参阅“Docker COPY
files using glob pattern? ”中的示例。关于docker - 将ARG中的多个文件指定为Dockerfile中的COPY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61599384/