Docker-compose:总是接收无法find指定的Dockerfile

我有一个以下的项目结构:

WebApp -- docker-compose.yml -- Dockerfile -- docker -- docker-gc --Dockerfile 

docker/docker-gc是我在使用这个命令之前创build的一个git子模块:

  git submodule add git@github.com:spotify/docker-gc.git docker/docker-gc 

在docker docker-gc compc中,我尝试在docker docker-gc运行Dockerfile。 这是我的服务:

 gc: container_name: docker-gc build: ./docker/docker-gc dockerfile: ./docker/docker-gc/Dockerfile volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc:/etc 

但我总是收到错误:

找不到指定的Dockerfile ./docker/docker-gc/Dockerfile

我已经尝试了许多方式,如docker/docker-gc/Dockerfile /docker/docker-gc/Dockerfile docker/docker-gc/Dockerfile/docker/docker-gc/Dockerfile没有结果。 这个问题涉及到符号链接(由于git子模块性质)。 请告诉我如何解决这个问题。

错误在你docker-compose.yaml文件中。 在该格式的版本1中,您可以指定builddockerfile 。 如果同时提供,则dockerfile属性表示预期可在build指定的目录中find的文件名。

在你的情况下,更改dockerfile属性只包括文件名,而不是在build相同的path:

 gc: container_name: docker-gc build: ./docker/docker-gc dockerfile: Dockerfile volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc:/etc 

由于Dockerfile是默认名称,您也可以简单地删除这一行:

 gc: container_name: docker-gc build: ./docker/docker-gc volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc:/etc 

请参阅Docker Compose文档以获取更多信息。

另请注意,Docker Compose文件格式的版本2使用了build参数的不同概念。

试着在没有Dockerfile的情况下做到这一点。 默认情况下,它应该使用指定文件夹中名为“Dockerfile”的文件。