繁体   English   中英

Docker复制似乎不适用于停止的容器和通配符

[英]Docker copy doesn't seem to work with stopped container and wildcard

我正在docker容器中构建一个Maven项目:

docker run build-image "mvn clean package -f ./pom.xml"

Dockerfile中用于“构建映像”的源和工作目录位于/ src /(具有两个子文件夹,每个子文件夹包含一个带pom.xml的子模块,父pom位于/src/pom.xml)

构建完成后,容器退出。 然后,我要提取构建工件:

docker cp <container-id>:/src/module1/target/*.war ./

我收到一个错误:

Error response from daemon: Could not find the file /src/<module1>/target/*.war in container silly_nobel

当我指定文件而不使用通配符时:

docker cp <container-id>:/src/<module1>/target/<module1>##0.1.0-SNAPSHOT.war ./

成功了..

这是预期的行为还是错误? 我用谷歌搜索了一下,但是找不到类似的帖子。 码头工人版本是18.02.0-ce, build fc4de44

最好的祝福

docker cp目前不支持通配符( github讨论

但是您可以通过使用多阶段构建来获得所需的内容。 在多阶段构建中,您可以使用允许通配符的COPY 这是一个简短的示例:

FROM alpine as builder
RUN touch foo.txt
RUN touch bar.txt


FROM alpine
COPY --from=builder /*.txt ./

生成运行图像:

$ docker build -t foobar .
$ docker run foobar ls
bar.txt
bin
dev
etc
foo.txt
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM