我有一个docker-composer设置,其中我正在上传服务器的数据,例如flask api。现在,当我更改python代码时,我必须遵循这样的步骤
这需要一些时间。有什么更好的办法吗?像在运行的docker中更新代码,然后在不停止整个容器的情况下重新启动Apache服务器?
答案 0 :(得分:0)
有几种肮脏的方法可以修改正在运行的容器的文件系统。
首先,您需要找到目录路径,该路径用作容器的运行时根。运行docker container inspect id/name
。在JSON输出中寻找键UpperDir
。您可以编辑/复制/删除该目录中的文件。
另一种方法是获取在容器内运行的进程的进程ID。转到/proc/process_id/root
目录。这是在docker内部运行的进程的根目录。您可以即时对其进行编辑,更改将显示在容器中。
答案 1 :(得分:0)
您可以在旧容器仍在运行时运行docker build
,并且停机时间仅限于转换期。
出于几个原因,将负载平衡器放在容器前面可能会有所帮助。根据您的应用程序,它可能是像HAProxy这样的“哑”负载平衡器,或是像nginx这样的完整Web服务器,或者是您的云提供商可以使用的东西。这使您可以一次在多个主机上运行该应用程序的多个副本(有助于扩展和提高可靠性)。在这种情况下,序列变为:
docker build
新图片docker run
它docker stop && docker rm
旧容器如果您不介意使用重量级的基础架构,那么此顺序基本上就是您更改Kubernetes部署对象中的图像标签时发生的事情,但是采用Kubernetes是一项重大的承诺。