使用docker compose启动容器失败:Dockerfile找不到问题求助
问题描述
运行docker compose build或docker compose up时出现如下错误:
failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3961901539/Dockerfile: no such file or directory
当前工作目录下已存在Dockerfile和docker-compose.yml文件,内容如下:
Dockerfile
# syntax=docker/dockerfile:1 FROM ubuntu:22.04 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 WORKDIR / RUN apt-get update && apt-get install -y python3.10 python3-pip RUN apt-get update && apt-get install -y git RUN apt-get update && apt-get install -y libpq-dev python3-dev COPY requirements.txt . RUN pip install -r requirements.txt COPY . .
docker-compose.yml
version: "1.1" services: db: image: postgres:15-alpine volumes: - ./db:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=postgres backend: build: / ports: - "8000:8000" volumes: - ./:/backend env_file: .env command: python manage.py runserver 0.0.0.0:8000 depends_on: - db restart: on-failure frontend: build: frontend/ ports: - "3000:3000" volumes: - ../frontend/src:/frontend/src environment: - CHOKIDAR_USEPOLLING=true command: npm run dev depends_on: - backend
问题原因
错误根源是backend服务的build配置错误:build: /指定的是主机系统的根目录作为构建上下文,而非你当前运行命令的工作目录。Docker会到根目录下查找Dockerfile,自然找不到,因此抛出文件不存在的错误。
修复方案
修正构建上下文配置
修改docker-compose.yml中backend服务的build字段,将/改为当前目录符号.,这样Docker会以你执行docker compose命令的工作目录作为构建上下文,读取该目录下的Dockerfile:backend: build: . # 此处从/改为. ports: - "8000:8000" # 其余配置保持不变清理Docker缓存(可选)
如果之前的错误构建留下了无效缓存,可执行以下命令清理所有未使用的Docker资源:docker system prune -af重新构建启动服务
执行以下命令重新构建并启动所有服务:docker compose up --build
内容的提问来源于stack exchange,提问作者crawlingdev
相关产品推荐
相关产品推荐

