Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何将卷装载到应用程序的源代码中?_Docker_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Docker 如何将卷装载到应用程序的源代码中?

Docker 如何将卷装载到应用程序的源代码中?,docker,kubernetes,google-kubernetes-engine,Docker,Kubernetes,Google Kubernetes Engine,我有kubernetes pod,在那里我将我的应用程序源代码装载为git卷。我尝试了各种设置,以了解如何将源代码放入pod中,最终我得到了git卷 但现在我有一个数据问题。我的应用程序中有一个文件目录(空),我需要在其中装入一个卷(保险丝)。但由于目标位于git卷上,我无法执行此操作。所以我想知道我应该如何重新设计我的应用程序 我是否应该将应用程序的源代码直接构建到映像中,这样我就可以将数据卷装载到映像中,还是可以通过某种方式将数据卷装载到另一个映像中,这样我就不必进行任何调整 我无法将目标目

我有kubernetes pod,在那里我将我的应用程序源代码装载为git卷。我尝试了各种设置,以了解如何将源代码放入pod中,最终我得到了git卷

但现在我有一个数据问题。我的应用程序中有一个文件目录(空),我需要在其中装入一个卷(保险丝)。但由于目标位于git卷上,我无法执行此操作。所以我想知道我应该如何重新设计我的应用程序

我是否应该将应用程序的源代码直接构建到映像中,这样我就可以将数据卷装载到映像中,还是可以通过某种方式将数据卷装载到另一个映像中,这样我就不必进行任何调整


我无法将目标目录移动到其他位置,因为应用程序必须在其目录中以及从web访问该目录。

我通常会在构建映像时将源添加到docker映像中。这是一个直截了当的过程,在部署方面,您始终可以将映像视为一个黑盒。这样做的目的是将映像的准备和在运行时作为两个不同的进程进行部署/更新有效地解耦

我相信这就是为什么kubernetes通过交换一个完整的映像,而不是试图修复一个容器的内容,可以轻松地执行滚动升级以推出新的软件版本。这与使用以下命令一样简单:

kubectl设置映像部署/my nginx部署my nginx image=TagXX

更换映像还可以确保清除任何碎片(例如,不断增长的日志、临时文件等),并允许您进行更多更改,而不仅仅是更改源(例如,升级服务器软件版本)

它还允许您基于确切的映像执行测试/转移,而不仅仅是在可能与生产服务器不同的服务器上进行代码部署


您可以在
更新部署

下阅读它,问题是如果您需要在多个容器(例如nginx和php)中使用源代码然后,您必须始终重建这两个映像,并在这两个映像中跟踪源代码的正确版本,而使用gitRepo,您只在部署中保留版本,而根本不必重建映像。如果我有一个php应用程序,我通常在同一个容器中部署nginx和php,因此代码只部署一次。我相信交换我的答案中列出的整个容器的好处超过了不将代码加载到两个单独容器中所带来的任何便利。下面是一个如何使用nginx和php创建容器的示例: