You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows(boot2docker)下运行docker-compose提示Dockerfiles未找到

解决Windows上Docker-Compose找不到Dockerfile的问题

我之前也碰到过类似的跨平台Docker配置坑,结合你的情况,大概率是Windows和类Unix系统的路径格式差异或者Docker Desktop的文件共享设置搞的鬼,下面给你几个排查和解决的方向:

1. 统一Dockerfile的路径格式

类Unix系统习惯用正斜杠/,Windows默认是反斜杠\,虽说Docker-Compose理论上兼容两种,但有时候就是会抽风。你可以试试:

  • 把docker-compose.yml里指向Dockerfile的路径统一改成正斜杠,比如:
    services:
      your-service:
        build:
          context: ./path/to/context
          dockerfile: ./subdir/Dockerfile # 用正斜杠写相对路径
    
  • 尽量用相对当前docker-compose.yml所在目录的路径,别用Windows的绝对路径(比如C:\xxx),Docker对这种路径的识别经常出问题

2. 检查Docker Desktop的文件共享权限

如果你用的是Docker Desktop for Windows,这一步绝对不能忘:

  • 打开Docker Desktop设置 → 找到Resources下的File Sharing
  • 勾选你的项目所在的磁盘(比如C盘),点击Apply & Restart重启Docker
  • 要是Docker没有权限访问你的本地目录,找不到Dockerfile简直是必然的

3. WSL2模式下的路径注意事项

要是你的Docker Desktop用的是WSL2后端:

  • 建议尽量在WSL2的终端里运行docker-compose up,别用Windows自带的CMD/PowerShell。因为WSL2的文件系统和Windows的NTFS是映射关系,直接在Windows终端跑命令,路径解析很容易出错
  • 要是你偏好用Windows终端,得注意项目目录的WSL路径,比如Windows的C:\projects\my-app对应WSL里的/mnt/c/projects/my-app,一定要在正确的路径下执行命令

4. 确认Dockerfile的文件名和位置

  • 检查Dockerfile的文件名是不是严格的Dockerfile——大写D开头,后面全小写,别写成dockerfile或者DockerFile。虽说Windows不区分大小写,但Docker有时候会认死理,跨平台配置最好统一成标准写法
  • 确保Dockerfile确实在你docker-compose.yml指定的位置,比如你设置了context: ./app,那Dockerfile就得在app目录里,或者用dockerfile: ./app/Dockerfile明确指定路径

5. 清除Docker缓存重试

有时候缓存会搞出一些莫名其妙的问题,执行下面的命令试试:

docker-compose build --no-cache
docker-compose up

要是还是搞不定,你可以把docker-compose.yml里相关服务的build配置贴出来,我帮你再细瞅~

内容的提问来源于stack exchange,提问作者IceBox

火山引擎 最新活动