Docker副本似乎不适用于已停止的容器和通配符

时间:2018-04-16 17:13:19

标签: maven docker

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

for row in df.iterrows():
    print row ['Path_ID'],row['METER'],row['LATITUDE_SM'], row ['LONGITUDE_SM']

“build-image”的Dockerfile中的source和workdir位于/ src /(有两个子文件夹,每个子文件夹包含一个带有pom.xml的子模块,/ prc /pom.xml中的父pom)

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

docker run build-image "mvn clean package -f ./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 ./

祝你好运

1 个答案:

答案 0 :(得分:1)

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

但是你可以使用multi stage builds得到你想要的东西。在多阶段构建中,您可以使用允许使用通配符的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
...