我们如何使用与“当前构建上下文路径”不同的目录中的共享Dockerfile?

我们如何使用与“当前构建上下文路径”不同的目录中的共享Dockerfile?,docker,dockerfile,Docker,Dockerfile,记住以下文件系统结构: 我想执行docker build并将“default.sh”文件复制到docker容器中。我想对目录a、b和c使用DockerfileB。并将相同的Dockerfile应用于所有3个脚本。但是,Docker抛出一个错误,指出Dockerfile必须位于同一生成上下文中 所以我运行这个: cd /home/oleg/WebstormProjects/oresoftware/sumanjs/suman/test/groups/c && docker buil

记住以下文件系统结构:

我想执行docker build并将“default.sh”文件复制到docker容器中。我想对目录a、b和c使用DockerfileB。并将相同的Dockerfile应用于所有3个脚本。但是,Docker抛出一个错误,指出Dockerfile必须位于同一生成上下文中

所以我运行这个:

cd /home/oleg/WebstormProjects/oresoftware/sumanjs/suman/test/groups/c &&  docker build --file=/home/oleg/WebstormProjects/oresoftware/sumanjs/suman/test/groups/Dockerfile -t c . 
我得到了这个错误:

unable to prepare context: The Dockerfile (/home/oleg/WebstormProjects/oresoftware/sumanjs/suman/test/groups/DockerfileB) must be within the build context (.)

这有什么办法吗?也许是符号链接?迫切需要解决此问题,因为我希望共享Dockerfile,而不必将相同的Dockerfile复制到子文件夹等。

符号链接在这种情况下不起作用,原因与Dockerfile相同,符号链接目标将位于构建上下文之外,Docker不允许这样做

硬链接每个a、b和c目录中的Dockerfile可以为Docker共享一个文件,但这与Git之类的源代码管理不兼容

A可能允许重用Dockerfile。使用groups目录的docker构建上下文,每当需要引用Dockerfile中的一个目录时,请使用变量/参数

FROM alpine
ARG DIR
COPY ${DIR}/default.sh /default.sh
然后和

cd groups
docker run --build-arg DIR=c -f ./DockerfileB .