Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Docker COPY对单个文件和目录的工作方式不同?_Docker_Dockerfile_Docker Image - Fatal编程技术网

为什么Docker COPY对单个文件和目录的工作方式不同?

为什么Docker COPY对单个文件和目录的工作方式不同?,docker,dockerfile,docker-image,Docker,Dockerfile,Docker Image,我有一个前端项目,其中包含package.json。(例如,想象一下createreact-app) 当我在下面运行命令时,一切正常,没有错误 first DockerFile COPY . develop WORKDIR develop COPY package.json develop WORKDIR develop 但如果我想要COPY,package.json下一个命令,我将面临一个错误 second DockerFile COPY . develop WORKDIR develop

我有一个前端项目,其中包含
package.json
。(例如,想象一下
createreact-app

当我在下面运行命令时,一切正常,没有错误

first DockerFile

COPY . develop
WORKDIR develop
COPY package.json develop
WORKDIR develop
但如果我想要
COPY
package.json
下一个命令,我将面临一个错误

second DockerFile

COPY . develop
WORKDIR develop
COPY package.json develop
WORKDIR develop
错误消息:
无法mkdir:/develop不是目录

我知道如何使用下面的命令将我的项目固定

WORKDIR develop
COPY package.json .
我只是想知道为什么第一个Dockerfile可以工作而第二个不能工作


我还使用了
COPY
命令之后运行ls,并找出在这两种情况下
develope
目录都已生成。

这是因为
COPY package.json develope
被指示将packages.json作为develope复制到容器中。因此,下一个指令WORKDIR失败,因为develope不是一个目录,而是一个文件

之前和之后使用/开发,它应该会起作用

FROM alpine
COPY temp.txt /develop/
WORKDIR develop

这是因为
COPY package.json develope
被指示将packages.json作为develope复制到容器中。因此,下一个指令WORKDIR失败,因为develope不是一个目录,而是一个文件

之前和之后使用/开发,它应该会起作用

FROM alpine
COPY temp.txt /develop/
WORKDIR develop

仅在
开发
之前添加
/
没有帮助,但是在
开发
之前和之后添加
/
与您提到的代码一样有效。谢谢。更新了评论。仅在
develope
之前添加
/
没有帮助,但是在
develope
之前和之后添加
/
与您提到的代码一样有效。谢谢。更新了评论。