gpt4 book ai didi

Docker,如何替换 docker 中的 capistrano 任务

转载 作者:行者123 更新时间:2023-12-02 09:08:09 24 4
gpt4 key购买 nike

我正在尝试对我的生产 Rails 应用程序进行 docker 化。

当前应用程序是使用 Ansible 配置并使用 capistrano 部署的。

我研究了不同的 docker 部署策略,并考虑摆脱 docker 中的 capistrano 并将 docker 与 docker-compose 一起使用

我正在编写 dockerfile 来配置和部署应用程序,但是部署类似于 capistrano 的应用程序有点复杂,因为deploy.rb 使用很少的 rake 任务来设置预部署任务,例如创建目录、设置应用程序名称和获取一些变量。

如何在 dockerfile 中复制 cap 任务,或者有没有办法在 docker 文件或运行 docker 容器中使用当前的 cap rake 任务?

最佳答案

对于您的情况,现在是退后一步考虑 Docker 的好处是否超过增加的复杂性的好时机。假设是这样,这里有一些关于如何使这些组件更好地协同工作的建议。

虽然 Ansible 是一个配置管理系统,但它也设计用于编排(即跨一系列远程计算机运行命令)。这与 Capistrano 有一些交叉,因此,您可能会发现将 Capistrano 任务移植到 Ansible 并从堆栈中消除工具(从而消除复杂性)很有用。这可能是通过创建一个用于部署应用程序的 deploy.yaml playbook 来实现的。

Docker 的职责也与 Ansible 重叠,但在不同的领域,即配置。应用程序所需的系统配置的任何部分都可以使用 Dockerfile 在容器内进行配置,而不是使用 Ansible 在系统范围内进行配置。

如果您有设置应用程序环境的 rake 任务,则可以将它们放入 Dockerfile 中的 RUN 命令中。但请记住,这些只会在您构建镜像时执行,而不是在您运行镜像时执行。

一般来说,我是这样看待的:Docker 设置了一个容器,其中包含运行应用程序的一部分所需的一切(包括代码的特定 checkout )。 Ansible 配置您运行容器的环境并管理所有更新容器并将它们放在正确位置的工作。

关于Docker,如何替换 docker 中的 capistrano 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084308/

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