Docker compose 失败并显示“无法读取 dockerfile:打开 /var/lib/docker/tmp/buildkit-mount[...]/Dockerfile:没有此类文件或目录”

the*_*ng2 5 docker dockerfile docker-compose

在 Windows 11 上,使用这个相当简单的docker-compose.yaml文件

version: '3.0'
services:
  php-apache-environment:
    container_name: php-apache
    build: ./php
    volumes:
      - ./php/src:/var/www/html/
    ports:
      - 8000:80

  db:
    image: mysql:5.6.27
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: PassWord
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: 9yI2G0s-sZf37SS5Ml1Kj
    ports:
      - "9906:3306"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    environment:
      PMA_HOST: db
      PMA_PORT: 9906
      PMA_USER: test
      PMZ_PASSWORD: 9yI2G0s-sZf37SS5Ml1Kj
    ports:
      - '8080:80'
    depends_on:
      - db
Run Code Online (Sandbox Code Playgroud)

并且命令docker compose up --detach图像被克隆,但我收到以下错误:

无法解决:rpc 错误:代码 = 未知 desc = 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:打开 /var/lib/docker/tmp/buildkit-mount1583816350/Dockerfile:没有这样的文件或目录

在 Docker 桌面中,我看到了图像,但未使用。

我用谷歌搜索了这个错误并提出了这个,但该行dockerfile: Dockerfile被拒绝:

services.phpmyadmin 不允许附加属性 dockerfile

β.ε*_*.βε 2

我绝对可以通过一个空的php文件夹来重现此内容,因此缺少Dockerfile,并使用以下最小示例。

\n

文件层次结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 php\n##  ^-- mind this is an empty folder, not a file\n
Run Code Online (Sandbox Code Playgroud)\n

和最小的docker-compose.yml

\n
version: "3.9"\nservices:\n  php-apache-environment:\n    container_name: php-apache\n    build: ./php\n
Run Code Online (Sandbox Code Playgroud)\n

运行docker compose up会产生与您相同的错误:

\n
\n

无法解决:rpc 错误:代码 = 未知 desc = 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:打开 /var/lib/docker/tmp/buildkit-mount2757070869/Dockerfile:没有这样的文件或目录

\n
\n

因此,如果您在php文件夹中创建一个Dockerfile,例如:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 php\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Dockerfile\n
Run Code Online (Sandbox Code Playgroud)\n

内容如下

\n
FROM php:fpm\n
Run Code Online (Sandbox Code Playgroud)\n

然后服务开始工作:

\n
FROM php:fpm\n
Run Code Online (Sandbox Code Playgroud)\n
\n

如果描述文件夹php中图像的文件的名称与标准名称(即Dockerfile )不同,那么您必须使用参数的对象形式来调整docker-compose.ymlbuild

\n
$ docker compose up    \n[+] Running 1/0\n \xe2\xa0\xbf Container php-apache  Created                               0.1s\nAttaching to php-apache\nphp-apache  | [14-Apr-2023 08:42:10] NOTICE: fpm is running, pid 1\nphp-apache  | [14-Apr-2023 08:42:10] NOTICE: ready to handle connections\n
Run Code Online (Sandbox Code Playgroud)\n

相关文档:https://docs.docker.com/compose/compose-file/build/#build-definition

\n