Docker-compose:总是收到无法找到指定的Dockerfile

时间:2016-12-22 15:30:12

标签: git docker docker-compose dockerfile git-submodules

我有以下项目结构:

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

docker/docker-gc是我在使用此命令之前创建的git子模块:

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

在docker-compose中,我尝试在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,但没有结果。这个问题是否与符号链接有关(由于git子模块性质)。请告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:4)

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

在您的情况下,将dockerfile属性更改为仅包含文件名而不是build中的路径:

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 documentation

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

答案 1 :(得分:0)

最后尝试不使用Dockerfile。默认值应该是它在指定的文件夹中使用名为“Dockerfile”的文件。