Docker compose 失败,提示“无法读取 Dockerfile:打开 /var/lib/docker/tmp/buildkit-mount[...]/Dockerfile: 没有这个文件或目录”。

5
在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

执行命令docker compose up --detach后,镜像被克隆,但是出现以下错误:

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount1583816350/Dockerfile: no such file or directory

在Docker桌面中,我看到这些镜像未被使用。

我在Google上搜索了这个错误,并找到了this,但是行dockerfile: Dockerfile被拒绝,显示:

services.phpmyadmin Additional property dockerfile is not allowed


phpmyadmin没有图像,因此不应尝试查找与之相关的_Dockerfile_,因此这不是导致您出现问题的服务。另一方面,php-apache-environment服务具有build指令,因此您的./php文件夹可能缺少正确的Dockerfile。 - β.εηοιτ.βε
@β.εηοιτ.βε 好的,谢谢!那么我需要改变什么才能让它正常工作? - undefined
1个回答

2

我可以肯定地重现这个问题,只需一个空的php文件夹,缺少Dockerfile,并使用以下最小示例。

文件层次结构:

.
├── docker-compose.yml
└── php
##  ^-- mind this is an empty folder, not a file

最小的docker-compose.yml文件:

version: "3.9"
services:
  php-apache-environment:
    container_name: php-apache
    build: ./php

运行docker compose up会和你一样出现以下错误:

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount2757070869/Dockerfile: no such file or directory

所以,如果你在php文件夹中创建一个Dockerfile,例如:

.
├── docker-compose.yml
└── php
    └── Dockerfile

如果有这样的内容

FROM php:fpm

接着服务开始工作:

$ docker compose up    
[+] Running 1/0
 ⠿ Container php-apache  Created                               0.1s
Attaching to php-apache
php-apache  | [14-Apr-2023 08:42:10] NOTICE: fpm is running, pid 1
php-apache  | [14-Apr-2023 08:42:10] NOTICE: ready to handle connections

如果描述位于php文件夹中的图像文件具有与标准名称(Dockerfile)不同的名称,则必须使用build参数的对象形式来调整docker-compose.yml

version: "3.9"
services:
  php-apache-environment:
    container_name: php-apache
    build: 
      context: ./php
      dockerfile: Dockefile.dev # for example

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接