我对代码部署有疑问。
我的团队曾经制作一个Docker映像来共享多个应用程序。 例如,一个Docker映像仅具有多个应用程序的依赖关系,当我从该映像运行容器时,我会“ git clone”我要从Github部署的代码。
我认为这不是使用Docker的正确方法。所以我问了一下,听说“是的,这不是使用Docker的好方法。在此之前,谷歌搜索'运行时拉代码'”。但是当我用谷歌搜索时,没有足够的结果。
由于即使在不使用Docker的情况下,我的团队也曾经通过'git clone'部署许多应用程序,所以我真的想知道为什么在运行时不好的情况下提取代码。
“为什么在运行时不好的情况下提取代码?”
答案 0 :(得分:1)
想象一下,每次您想问或回答Stack Overflow问题时,都需要下载Chrome的源代码并从源代码重新编译它。这显然需要很长时间。有时网络或远程服务器出现故障,无法下载源;它实际上不是Chrome,而是它的私有分支,因此您需要在每次运行时重新输入GitHub密码,或将密码保存在某个地方。因此,您无需这样做,只需编译一次应用程序,然后运行已编译的二进制文件即可。
Docker就像这样:映像是一个自包含的对象,其中包含应用程序,其语言运行时及其所有依赖项。您只需docker run
,它便会启动,而无需提取代码或与远程服务器联系。
这样做的缺点是,每当更改代码时都需要重建映像。无论如何,对于各种通用语言环境(C,C ++,Java,Go,Rust,通过Typescript或Webpack的Javascript)来说,这都是很常规的,这是连续集成(自动构建)系统可以非常简单地执行的一步。典型的做法是在对源代码系统的每次提交上构建新映像,并仅部署构建的独立映像。
还值得注意的是,Docker是一项相对较新的技术,不需要使用它。如果您的工作流基于使用Ansible或Chef之类的工具将语言运行库部署到生产系统,则使用不需要构建步骤的解释语言(Python,Ruby,纯Javascript),并直接提取源代码通过源代码控制系统,如果可以运行,您绝对可以继续使用它。