我试图为我的盖茨比应用程序构建Docker映像。每当我运行命令docker构建。-t gatsbyapp,它会给出一个错误:

failed to solve with frontend dockerfile.v0: failed to build LLB:
failed to compute cache key: "/.env" not found: not found

同时我的Dockerfile如下所示:

FROM node:13

WORKDIR /app

COPY package.json .

RUN yarn global add gatsby-cli

RUN yarn install

COPY gatsby-config.js .

COPY .env .

EXPOSE 8000

CMD ["gatsby","develop","-H","0.0.0.0"]

当前回答

在我的案例中,这是因为文档中的用例没有得到充分表达。几乎所有的例子都告诉你要使用。和Dockerfile(大写D),但它们大多没有明确地告诉如何定制。

docker image build --tag any_image_tag --file any_file_name path_to_your_context_folder

我认为这个更好,我希望它能帮助到那些来这里的人。Any_file_name实际上是包含构建指令的任何文件名。其中的“dockerfile”是不需要的,但如果它与上下文文件夹不同,它有助于识别并给出完整的路径。Path_to_your_context_folder基本上是你的工作所在的文件夹,比如一个web应用程序。

例如,下面是我当前在COPY窗口中的测试。/app使用context文件夹作为。:

docker image build --tag nested_image --file C:\WorkSpace\myapp\dockerfiles\any_file_name C:\WorkSpace\myapp\contextfiles\

PS:对于同一个问题,这个主题确实有很多有趣的答案,但是是由许多奇异的原因引起的。我的问题只是一个显而易见的问题的旁注。

其他回答

确保你的.dockerignore与你的文件不匹配。

有时使用.dockerignore的模式是向其添加通配符,并使用!filename语法将特定期望的文件排除到上下文中。例如:

*
!Cargo.toml
!Cargo.lock
!src
!setup.py
!README.md
!project
!requirements
__pycache__

如果您稍后尝试在Dockerfile中使用一个文件,它将匹配通配符,而不会出现在上下文中。向新文件添加异常或删除通配符来修复此问题。

在我的情况下,我不得不卸载Astrill VPN。

可能不是OP的问题,但我在试图构建运行在Windows Linux子系统(WSL) (Debian WSL2)中的容器时遇到了这个问题,刚刚安装了Docker Compose,我所要做的就是关闭(Debian)终端并重新打开它,我的问题就解决了。

对于docker桌面,这个问题通常通过添加-f选项来解决。 例如:让docker文件放在c:\Dockerfile.txt

您可以运行以下命令来构建映像

docker build -f "c:\Dockerfile.txt"

我也有同样的问题。

码头工人文件名:

DockerFile错误 dockerFile错误 Dockerfile -工作!

你只需要一个大写的字符。