Ubuntu 16.04下Dockerfile.dev存在但docker-compose无法定位的问题求助
解决Docker Compose找不到指定Dockerfile的问题
我之前也碰到过一模一样的坑,核心是没搞明白context和dockerfile路径的相对关系,给你捋清楚:
问题根源
你在docker-compose.yml里设置的context: ./containers/nginx,相当于告诉Docker先切换到这个目录作为构建的上下文环境,然后再去寻找你指定的dockerfile路径。但你写的dockerfile: ./containers/nginx/Dockerfile.dev是相对于项目根目录的路径,这就导致Docker会在./containers/nginx目录下去找./containers/nginx/Dockerfile.dev——这显然不存在,自然抛出错误。
两种可行解决方案
方案1(推荐):修正dockerfile路径(相对于context)
既然context已经指向了./containers/nginx,那dockerfile只需要写文件名即可,因为它是相对于context目录的:
nginx: build: context: ./containers/nginx dockerfile: Dockerfile.dev
方案2:调整context为项目根目录
如果你不想改动dockerfile的路径,也可以把context设为项目根目录,这样dockerfile的路径就和你原来写的一致了:
nginx: build: context: . dockerfile: ./containers/nginx/Dockerfile.dev
额外验证步骤
为了确保文件确实存在,你可以在项目根目录执行这条命令确认:
ls ./containers/nginx/Dockerfile.dev
如果输出文件名,说明文件位置没问题,用上面的方案就能解决问题。
内容的提问来源于stack exchange,提问作者Mikk Küttim




