我在构建 docker 映像时遇到了一些麻烦,因为代码的结构方式。代码是用 C# 编写的,在一个解决方案中,有很多“支持”我想要构建的应用程序的项目。
我的问题是,如果我将 dockerfile 放入根目录中,我可以构建它,没有任何问题,这没关系,但我认为这不是最佳方式,因为我们还有一些其他 dockerfile,我们还需要构建,如果我把它们全部放入根文件夹,我认为它最终会变得凌乱。
因此,如果我将 dockerfile 放入带有应用程序的文件夹中,我如何导航到根文件夹以获取我需要的文件夹?
我尝试使用“../”,但从我的角度来看,它似乎不起作用。有什么办法可以做到,或者在这种情况下最佳实践是什么?
Efr*_*tan 10
从根目录运行它:
docker build . -f ./path/to/dockerfile
在 dockerfile 中,你真的不能上去。
当 docker 守护进程构建您的映像时,它使用 2 个参数:
Dockerfile上下文就是您.在 dockerfile 中所指的内容。(例如,如COPY . /app)两者影响最终的形象- dockerfile决定什么事情发生。上下文告诉docker 它应该在哪些文件上执行您在该 dockerfile 中指定的操作。
构建的上下文是位于指定 PATH 或 URL 中的一组文件。构建过程可以引用上下文中的任何文件。例如,您的构建可以使用 COPY 指令来引用上下文中的文件。
因此,通常上下文是放置 Dockerfile 的目录。我的建议是把它留在它所属的地方。以它们的角色(Dockerfile.dev、Dockerfile.prod等)命名您的 dockerfile ,这可以在同一个目录中包含其中的一些。
毕竟,您是指定上下文的人。因为该docker build命令接受上下文和 dockerfile 路径。当我运行时:
docker build .
我实际上是在给它我当前目录的上下文,(我省略了 dockerfile 路径,所以它默认为PATH/Dockerfile)
所以如果你有一个 dockerfile dockerfiles/Dockerfile.dev,你应该把自己放在你想要作为上下文的目录中,然后运行:
docker build . -f dockerfiles/Dockerfile.dev
同样适用于docker-compose构建部分(您在那里指定上下文和 dockerfile 路径)
希望这是有道理的。
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |