代码部署问题(运行时拉取代码)
Question for code deployment(pulling code when runtime)
我对代码部署有疑问。
我的团队曾经制作 Docker 图像来共享多个应用程序。
例如,一个 Docker 图像只依赖于几个应用程序,当我 运行 来自该图像的容器时,我 'git clone' 我的代码我想从 [=28= 部署].
我认为这不是使用 Docker 的正确方法。于是问了一下,听说是"Yes, It's not a good way to use Docker. And before that, google about 'pulling code when runtime'"。但是当我用谷歌搜索时,没有足够的结果。
因为我的团队过去常常通过 'git clone' 部署许多应用程序,即使不使用 Docker,我真的很想知道为什么在 运行 时间不好时拉代码。
"Why pulling code when runtime is bad?"
想象一下,每次您想提出或回答 Stack Overflow 问题时,您都需要下载 Chrome 的源代码并从源代码重新编译它。这显然需要很长时间;有时网络或远程服务器出现问题,导致下载源失败;它实际上不是 Chrome,而是您的私人分支,因此您需要在每次 运行 时重新输入 GitHub 密码,或者将该密码保存在某处。所以你不这样做,你编译应用程序一次,然后 运行 编译的二进制文件。
Docker 就像这样:一个图像是一个独立的对象,它包含一个应用程序、它的语言 运行时间,以及它的所有依赖项。您只需 docker run
它就会启动,无需提取代码或联系远程服务器。
这样做的缺点是每次更改代码时都需要重建映像。对于各种通用语言环境(C、C++、Java、Go、Rust、通过 Typescript 或 Webpack 编写的 Javascript)来说,这无论如何都是非常常规的,并且这是您持续集成(自动构建)的一个步骤系统可以做的非常简单。典型的做法是在每次提交到源代码系统时构建一个新映像,并仅部署构建的独立映像。
还值得注意的是,Docker 是一项相对较新的技术,没有使用它的要求。如果您的工作流程基于使用 Ansible 或 Chef 等工具将语言部署到生产系统 运行,请使用不需要构建步骤的解释型语言(Python、Ruby, plain Javascript), 并直接从源代码控制系统中拉取源代码,如果它有效,你绝对可以继续使用它。
我对代码部署有疑问。
我的团队曾经制作 Docker 图像来共享多个应用程序。 例如,一个 Docker 图像只依赖于几个应用程序,当我 运行 来自该图像的容器时,我 'git clone' 我的代码我想从 [=28= 部署].
我认为这不是使用 Docker 的正确方法。于是问了一下,听说是"Yes, It's not a good way to use Docker. And before that, google about 'pulling code when runtime'"。但是当我用谷歌搜索时,没有足够的结果。
因为我的团队过去常常通过 'git clone' 部署许多应用程序,即使不使用 Docker,我真的很想知道为什么在 运行 时间不好时拉代码。
"Why pulling code when runtime is bad?"
想象一下,每次您想提出或回答 Stack Overflow 问题时,您都需要下载 Chrome 的源代码并从源代码重新编译它。这显然需要很长时间;有时网络或远程服务器出现问题,导致下载源失败;它实际上不是 Chrome,而是您的私人分支,因此您需要在每次 运行 时重新输入 GitHub 密码,或者将该密码保存在某处。所以你不这样做,你编译应用程序一次,然后 运行 编译的二进制文件。
Docker 就像这样:一个图像是一个独立的对象,它包含一个应用程序、它的语言 运行时间,以及它的所有依赖项。您只需 docker run
它就会启动,无需提取代码或联系远程服务器。
这样做的缺点是每次更改代码时都需要重建映像。对于各种通用语言环境(C、C++、Java、Go、Rust、通过 Typescript 或 Webpack 编写的 Javascript)来说,这无论如何都是非常常规的,并且这是您持续集成(自动构建)的一个步骤系统可以做的非常简单。典型的做法是在每次提交到源代码系统时构建一个新映像,并仅部署构建的独立映像。
还值得注意的是,Docker 是一项相对较新的技术,没有使用它的要求。如果您的工作流程基于使用 Ansible 或 Chef 等工具将语言部署到生产系统 运行,请使用不需要构建步骤的解释型语言(Python、Ruby, plain Javascript), 并直接从源代码控制系统中拉取源代码,如果它有效,你绝对可以继续使用它。