【问题标题】:Deploy source only to app servers仅将源部署到应用服务器
【发布时间】:2014-02-10 13:45:35
【问题描述】:

我正在使用 capistrano 3 设置一个新环境,其中一个单独的数据库服务器具有 db 角色。这是我正在使用的规范:

set :stage, "preview"
server 'my-web-server', roles: %w{app web}
server 'my-db-server', roles: %{db}

但是,它会尝试检查 my-db-server 上的源代码,我不想要它,甚至没有安装 git。鉴于 deploy 任务是内置的,我该如何阻止 capistrano 这样做?

我可以使用 ROLES=app,web cap myenv deploy 解决它,但是我怎样才能将其设为默认值,以便我的团队成员不必担心呢?

【问题讨论】:

    标签: git capistrano capistrano3


    【解决方案1】:

    默认情况下,Capistrano 使用remote 策略从 Git 获取源代码,这意味着服务器将尝试拉取源代码。

    我认为您想要的是local 策略。在这种情况下,Capistrano 可以从您的机器上获取源代码,然后通过 scp 复制文件。

    它可以通过deploy_via 属性进行配置。正确的值为copy

    http://bu.chsta.be/blog/2013-02-24/capistrano-deployment-strategies-deploy-via-a-copy/

    【讨论】:

    • 问题不在于代码的传输方式,而在于部署的目标角色。 remote 策略适用于 app 角色,但我想要的是完全停止在 db 角色上进行部署,因为它不需要访问我们的资源。
    • 好的。那么,我们可以查看更多您的 conf 文件吗?如果我很好地阅读了文档,我会使用角色命令而不是服务器命令。喜欢:角色:db,%w{my-db-server}(参见:medium.com/p/ba896a142ac
    • 我将其余配置添加到问题中。不幸的是,使用role 并没有帮助
    猜你喜欢
    • 2021-01-17
    • 2011-09-11
    • 2019-07-06
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多