我目前有一组应用程序在单独的 Docker 容器中运行。容器本身在云上运行。有时,配置更新是必要的。配置更新要求我发送一个大小为 300 - 500 MB 的文件。 我想知道执行此操作的最佳做法是什么。
每个容器都公开了一个 Swagger 文档,因此我可以公开一个端点来潜在地加载文件。在这种情况下,我会通过请求正文发送文件的内容吗?
由于网络和安全问题,我认为公开端点并将整个文件上传到服务器不是一个好主意。
目前,我不知道这些更新文件是什么,但按照你的方法,容器将做双重工作。 (做自己的工作+下载更新)
要复制更新的文件,您可以使用像
scp
这样的安全协议从本地复制到 docker 容器。现在假设您有更新文件的备份,以防在复制更新时出现网络故障,则此方法有效。
这里有一个更好的策略。
理想情况下,所有更新文件都应托管在 docker 主机上,然后使用卷安装到 docker 容器
更好的方法是您应该将此更新文件上传到高度可扩展的云存储服务。
您的存储触发器将到达一个端点,该端点将开始将更新文件下载到您的 Docker 主机
成功下载后,您可以重新启动容器,该容器将从 docker 主机选择最新更新
总而言之,您将在 Docker 外部有一个端点,它可以为您下载更新并处理使用正确的更新版本启动/停止容器的逻辑。
更不用说,对以前的更新进行备份会很棒,这将在更新错误时有所帮助。您可以为此使用滚动更新文件编写器类型的机制。
这种方法在网络和安全方面都很棒。
希望这有帮助。谢谢。