首页 > 解决方案 > 将 Docker 中的 * 文件复制到目录会出错

问题描述

我有以下 Dockerfile

FROM openjdk:8-jdk-alpine
RUN mkdir -p /webpieces
COPY * /webpieces
WORKDIR "/webpieces"
ENTRYPOINT ["./bin/webpiecesexample"]

当我这样构建时,出现以下错误

Deans-MacBook-Pro:webpiecesexample dean$ docker build -t gcr.io/braided-topic/webpieces2 .
Sending build context to Docker daemon  75.56MB
Step 1/5 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/5 : RUN mkdir -p /webpieces
 ---> Running in bc615c0cd540
Removing intermediate container bc615c0cd540
 ---> 69a2f4530c44
Step 3/5 : COPY * /webpieces
When using COPY with more than one source file, the destination must be a directory and end with a /

当我修剪 DockerFile 并仅使用前两行进行构建,然后使用基本 shell 运行以查看目录时,我会在那里看到 webpieces 目录

docker run -it --entrypoint sh gcr.io/braided-topic-266113/webpieces2

我可以 cd 到 webpieces 和一切。为什么复制命令在这里不起作用?

码头版本在这里:

Deans-MacBook-Pro:distributions dean$ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:22:34 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:29:19 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

标签: docker

解决方案


COPY与多个源文件一起使用时,目标必须是一个目录并以/.

COPY将行更改为

COPY * /webpieces/

...它似乎复制了每个目录的内容,而不是目录本身。我不想命名我移动的每个目录,因为我们更喜欢在进行更改时自动添加。

使用.代替,*它将保留所有嵌套。

COPY . /webpieces/

推荐阅读