我在构建一个坞映像时遇到了一些困难,因为代码的构造方式。代码是用C#编写的,在解决方案中有很多项目“支持”我想要构建的应用程序。
我的问题是,如果我把dockerfile放到根中,我就可以构建它,没有任何问题,但我不认为这是最佳的方法,因为我们还需要构建一些其他的dockerfile,如果我把它们全部放到根文件夹中,我认为它最终会变得很混乱。
因此,如果我将dockerfile放入应用程序的文件夹中,如何导航到根文件夹以获取所需的文件夹?
我试着用"../“,但从我的观点来看,它似乎行不通。有没有任何方法可以做到这一点,或者在这个场景中什么是最佳实践?
发布于 2019-06-13 21:57:20
TL;DR
从根目录运行它:
docker build . -f ./path/to/dockerfile
长话短说:
在码头档,你真的不能上去。
为什么
当停靠守护进程正在构建映像时,它使用两个参数:
Dockerfile上下文就是您在dockerfile中所称的.。(例如,作为COPY . /app),它们都会影响最终的映像-- dockerfile决定了将发生什么。上下文告诉上的文件应该执行您在该dockerfile中指定的操作。
构建的上下文是位于指定路径或URL中的一组文件。生成过程可以引用上下文中的任何文件。例如,生成可以使用复制指令引用上下文中的文件。
因此,上下文通常是放置Dockerfile的目录。我的建议是把它留在属于它的地方。将您的dockerfile命名为它们的角色(Dockerfile.dev、Dockerfile.prod等),可以在同一个dir中使用其中的几个。
上下文仍然可以更改:
毕竟,是您指定了上下文。因为docker build命令接受上下文和dockerfile路径。当我跑步时:
docker build .
实际上,我给它的是当前目录的上下文(我省略了dockerfile路径,因此默认为PATH/Dockerfile)
因此,如果您在dockerfiles/Dockerfile.dev中有一个dockerfile,您应该将自己放在您想要的目录中作为上下文,然后运行:
docker build . -f dockerfiles/Dockerfile.dev
同样适用于docker-compose构建部分(您指定了上下文和dockerfile路径)
希望这是合理的。
https://stackoverflow.com/questions/56587758
复制相似问题