Docker,路径,json-找不到文件:找不到
Docker, paths, json-file not found: not found
问题是什么?每次发生这种情况...
=> CACHED [2/5] WORKDIR ../app 0.0s
=> ERROR [3/5] COPY package.json . 0.0s
------
> [3/5] COPY package.json .:
------
failed to compute cache key: "/package.json" not found: not found
我不明白我做错了什么。
Docker 文件:
FROM node
WORKDIR /app
COPY ../app/package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
我在 powershell 中使用 docker build .
您正在更新 WORKDIR,如文档所述:
WORKDIR 指令为任何 运行、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录它在 Dockerfile 中。
我想,说的就是
COPY package.json
应该够了。
您不能将上下文(您所在的当前目录)之外的文件包含到 docker 图像中
因此您可以将主机上的 app
目录移动到 Dockerfile
或
的文件夹
您可以执行以下操作
docker build -f docker\Dockerfile .
在 父目录 中(即包含 docker
和 app
文件夹的目录)。并按如下方式调整您的 Dockerfile
COPY app/package.json .
不幸的是,Dockerfile 无法访问父目录。但是,您可以使用 docker build -f path/to/dockerfile .
从父目录构建 dockerfile。请记住,您的 COPY
是相对于您 运行 和 docker build
所在的目录的,该目录是父目录。
另外,WORKDIR
uses/creates 一个目录 在容器内 。 WORKDIR /app
在容器的根目录创建了 'app' 文件夹,所以 /../app
是不必要的(尽管它达到了相同的结果)。
您不能引用 docker 文件中的父目录,原因在 docker 文档中解释:
The path must be inside the context of the build; you cannot ADD
../something /something, because the first step of a docker build is
to send the context directory (and subdirectories) to the docker
daemon.
最简单的解决方法是:
docker build -t <some tag> -f <dir/dir/Dockerfile> .
您可以添加的另一件事是构建上下文。您可以配置上下文,而不是将当前目录中的所有文件复制到 Docker 守护程序,例如
docker build -t <some tag> -f ./dir/to/Dockerfile ./dir/to/build/context
问题是什么?每次发生这种情况...
=> CACHED [2/5] WORKDIR ../app 0.0s
=> ERROR [3/5] COPY package.json . 0.0s
------
> [3/5] COPY package.json .:
------
failed to compute cache key: "/package.json" not found: not found
我不明白我做错了什么。
Docker 文件:
FROM node
WORKDIR /app
COPY ../app/package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
我在 powershell 中使用 docker build .
您正在更新 WORKDIR,如文档所述:
WORKDIR 指令为任何 运行、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录它在 Dockerfile 中。
我想,说的就是
COPY package.json
应该够了。
您不能将上下文(您所在的当前目录)之外的文件包含到 docker 图像中
因此您可以将主机上的 app
目录移动到 Dockerfile
或
您可以执行以下操作
docker build -f docker\Dockerfile .
在 父目录 中(即包含 docker
和 app
文件夹的目录)。并按如下方式调整您的 Dockerfile
COPY app/package.json .
不幸的是,Dockerfile 无法访问父目录。但是,您可以使用 docker build -f path/to/dockerfile .
从父目录构建 dockerfile。请记住,您的 COPY
是相对于您 运行 和 docker build
所在的目录的,该目录是父目录。
另外,WORKDIR
uses/creates 一个目录 在容器内 。 WORKDIR /app
在容器的根目录创建了 'app' 文件夹,所以 /../app
是不必要的(尽管它达到了相同的结果)。
您不能引用 docker 文件中的父目录,原因在 docker 文档中解释:
The path must be inside the context of the build; you cannot ADD ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.
最简单的解决方法是:
docker build -t <some tag> -f <dir/dir/Dockerfile> .
您可以添加的另一件事是构建上下文。您可以配置上下文,而不是将当前目录中的所有文件复制到 Docker 守护程序,例如
docker build -t <some tag> -f ./dir/to/Dockerfile ./dir/to/build/context