为什么 Docker COPY 对单个文件和目录的处理方式不同?
Why Docker COPY works differently with single file and directory?
我有一个前端项目,其中包含 package.json
。(假设 create-react-app
例如)
当我 运行 下面的命令时,一切正常,没有错误。
first DockerFile
COPY . develop
WORKDIR develop
但如果我想要 COPY
,package.json
下一个命令,我将面临错误。
second DockerFile
COPY package.json develop
WORKDIR develop
错误信息:Cannot mkdir: /develop is not a directory
我知道如何使用以下命令对我的项目进行 docker 化。
WORKDIR develop
COPY package.json .
我只是想知道为什么第一个 Dockerfile 有效而第二个无效。
我还在 COPY
命令后使用了 RUN ls
,发现在这两种情况下都生成了 develop
目录。
这是因为 COPY package.json develop
被指示将 packages.json 复制到容器中作为 develop。所以下一个指令 WORKDIR 失败了,因为 develop 不是目录而是文件。
在develop之前&&之后使用/,它应该可以工作。
FROM alpine
COPY temp.txt /develop/
WORKDIR develop
我有一个前端项目,其中包含 package.json
。(假设 create-react-app
例如)
当我 运行 下面的命令时,一切正常,没有错误。
first DockerFile
COPY . develop
WORKDIR develop
但如果我想要 COPY
,package.json
下一个命令,我将面临错误。
second DockerFile
COPY package.json develop
WORKDIR develop
错误信息:Cannot mkdir: /develop is not a directory
我知道如何使用以下命令对我的项目进行 docker 化。
WORKDIR develop
COPY package.json .
我只是想知道为什么第一个 Dockerfile 有效而第二个无效。
我还在 COPY
命令后使用了 RUN ls
,发现在这两种情况下都生成了 develop
目录。
这是因为 COPY package.json develop
被指示将 packages.json 复制到容器中作为 develop。所以下一个指令 WORKDIR 失败了,因为 develop 不是目录而是文件。
在develop之前&&之后使用/,它应该可以工作。
FROM alpine
COPY temp.txt /develop/
WORKDIR develop