首页 > 解决方案 > 为什么 Docker COPY 对单个文件和目录的工作方式不同?

问题描述

我有一个前端项目,其中包括package.json它。(create-react-app例如想象)

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

first DockerFile

COPY . develop
WORKDIR develop

但如果我想要COPYpackage.json下一个命令我将面临一个错误。

second DockerFile

COPY package.json develop
WORKDIR develop

错误信息:Cannot mkdir: /develop is not a directory

我知道如何使用以下命令对我的项目进行 dockerize。

WORKDIR develop
COPY package.json .

我只是想知道为什么第一个 Dockerfile 有效,而第二个无效。

我还使用RUN ls了 afterCOPY命令并在这两种情况下develop都已生成目录。

标签: dockerdockerfiledocker-image

解决方案


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

在开发之前和&之后使用/,它应该可以工作。

FROM alpine
COPY temp.txt /develop/
WORKDIR develop

推荐阅读