我试图为我的盖茨比应用程序构建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"]

当前回答

如果你在Windows上使用Docker,那么确保Docker引擎被设置为与你想要构建的映像(Windows / Linux)匹配的模式。

其他回答

如果你看到了这个问题,它实际上并不是真正的问题。实际问题嵌套在错误日志的某个地方。要查看实际问题,您需要像这样运行构建命令:

DOCKER_BUILDKIT=0  docker build .

注意DOCKER_BUILDKIT=0。这将使构建工具包不隐藏嵌套错误。从那里你应该能够谷歌正确的解决方案。

这也会使构建在命令行中看起来不同,但不用担心。只需要查找错误。

如果你有一个类似的项目结构,

├── docker
│   │
│   ├── app
│   │   └── Dockerfile
│   └── mlflow
│       └── Dockerfile
│
└── docker-compose.yml

你可能没有在docker-compose.yml中指定build: context:

version: '3'

services:

  mlflow:
    build:
      context: ./
      dockerfile: ./docker/mlflow/Dockerfile
    container_name: ml_app_mlflow
    volumes:
      - ./db:/db
    ports:
      - 5000:5000

如果你在Mac或Windows上使用Docker Desktop,你可能也必须在你的“Docker引擎”JSON配置中禁用它。

Docker Desktop→Settings→Docker Engine→将“features”:{buildkit: true}改为“features”:{buildkit: false}。

我必须在我的~/.docker/config中设置“credsStore”:“”。json……它之前被设置为credentials.exe。

在WSL2中,ddev在docker-credential-desktop.exe上启动失败,“错误列出凭据”#2342

我有这个问题/错误之前,我有一个脚本,我用来构建多个dockerfile,其中一个Dockerfiles被注释掉了。 当我取消注释Dockerfile并再次运行脚本时,它对我来说工作得很好。