gpt4 book ai didi

docker - 如何部署在Docker中运行的应用程序-最佳实践?

转载 作者:行者123 更新时间:2023-12-02 18:30:28 27 4
gpt4 key购买 nike

我们正在讨论如何部署在Docker容器中运行的应用程序。目前,我们在包含应用程序代码的管道中构建应用程序镜像。这意味着我们必须在每次应用程序更新时都构建docker镜像。

我们考虑的另一种方法是将应用程序代码放在服务器上的卷中。然后,我们在服务器上使用git拉最新版本。因此,不必重建镜像。

因此,我们讨论的选项是:

  • 构建包含应用程序代码
  • 的图像
  • 使用卷并将应用程序代码存储在服务器上

  • 最佳做法是什么?为什么?

    最佳答案

    尽管这里的其他答案已经说明了将代码构建到图像中的要点,但我想更进一步,向您展示,如何在遵循此最佳实践的同时获得的好处。

    Docker最佳实践要求在部署之前将源代码构建到镜像中,而不是部署先安装依赖项再将源代码作为卷装入的镜像。

    这为您提供了一个独立的,可移植的容器,可以轻松地对其进行测试,部署或回滚。

    我可以为您为什么要考虑热挂载代码而a之以鼻吗?

    热安装代码之所以有吸引力,有几个原因-在不牺牲构建一个独立图像的最佳实践的情况下,它们都很容易实现:

  • 构建Docker镜像可能会很慢,那么当您只需热挂载代码时为什么要进行较小的更改来进行重建?

    最佳的补充做法是使用安装所有依赖项的“基础镜像”-通常是构建docker镜像的较慢部分。关键见解是该基本镜像不会经常更改!

    但是,从中获得的镜像(即安装了源代码的应用程序镜像)将随您要部署的每个提交而改变。该派生图像将很快建立。 Dockerfile可能很简单:
    FROM myapp/base .      # all dependencies installed in base image
    ADD code.tar.gz /src # automatic untaring!
    CMD [...] # whatever it takes to run your app
  • 热挂载可加快开发周期,因为开发人员无需冲洗 docker 容器,重建并运行新容器即可看到更改。

    这是一个公平的观点。我建议制作一个“dev”镜像(该镜像也将从您的基本镜像派生),该镜像允许通过卷而不是在测试和部署镜像中具有的源代码安装步骤进行代码安装。
  • 关于docker - 如何部署在Docker中运行的应用程序-最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48113731/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com