首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有停机的情况下同时部署2个应用程序

在没有停机的情况下同时部署2个应用程序
EN

Stack Overflow用户
提问于 2016-03-21 10:18:06
回答 1查看 138关注 0票数 0

我有一个共享库,顾名思义,这是一个在不同项目之间共享的项目,以避免干燥。共享库是一个GIT存储库以及其他应用程序(app1、app2、app3)。

在部署app1时,我希望首先部署共享,然后部署app1。app2和app3也是如此。为了避免任何停机时间,共享库必须与app1同时部署,因此基本上在两个成功部署结束时都需要部署:符号链接:release。

当共享库中的代码发生变化时,我必须确保所有依赖它的项目也同时部署。

到目前为止,我已经成功地安装了Capistrano来分别部署每个应用程序。经过一些阅读,我正在使用现在的caphub,但它似乎没有帮助我解决这个问题。

我目前正在使用的是:

代码语言:javascript
复制
namespace :app1 do
 task :deploy do
    run_locally do
       execute 'cap apps:shared staging deploy --dry-run', raise_on_non_zero_exit: true
       execute 'cap apps:app1 staging deploy --dry-run', raise_on_non_zero_exit: true
       execute 'cap apps:shared staging deploy', raise_on_non_zero_exit: true
       execute 'cap apps:app1 staging deploy', raise_on_non_zero_exit: true
    end
 end
end

执行的问题是,在更新共享和部署app1时,app1将处于停机状态。

解决这个问题的最佳做法是什么?是否有一种方法可以覆盖capistrano的流,使其只在任务结束时执行符号链接?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 12:36:00

虽然不同的人会有不同的回答,但我认为我推荐的“最佳实践”是让每个项目在其部署中包括共享库。除非代码是大量的,或者必须同时部署(例如更改共享配置),否则这通常没有什么坏处。如果您正在使用PHP,则可以为此使用Composer。和露比,邦德勒。这两种方法都可以指向Git端点。

这就是Gems在Capistrano中的工作方式,Capistrano::Bundler将该应用程序的所有宝石的独特的、每个应用程序的副本复制到shared/bundler中。

编辑:

要从Git存储库中添加一个Composer共享库,您有两个主要选项:

  1. 向库中添加一个composer.json文件(这将使您更容易/可能完成PSR-4自动加载)。这里的说明:https://getcomposer.org/doc/05-repositories.md#using-private-repositories
  2. 让作曲家盲目地拉你的库,只是把它粘在vendor/里。这里的说明:https://getcomposer.org/doc/05-repositories.md#package-2

如果你有一个关于作曲家的用法的具体问题,我建议你发布一个新的问题。其他比我更熟悉作曲家的人可能会帮助你。我不像其他工具那么多地使用作曲家。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36128292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档