我有以下项目结构:
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子模块性质)。请告诉我如何解决这个问题。
答案 0 :(得分:4)
错误发生在docker-compose.yaml
文件中。在该格式的第1版中,您可以同时指定build
和dockerfile
。如果同时提供两者,则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”的文件。