2014-02-10 50 views
2

我设置了Capistrano的3新的环境,在分贝角色单独的数据库服务器。这是我使用的规范:部署源只应用服务器

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

然而,试图检出我-DB服务器,我不想,甚至没有安装git的来源。考虑到deploy任务是内置的,我如何才能阻止Capistrano做到这一点?

我可以ROLES=app,web cap myenv deploy解决办法,但我我怎样才能让它默认设置,以便我的团队成员并不需要担心吗?

回答

0

默认情况下,Capistrano的使用remote策略来从Git的,这意味着服务器将尽量拉源代码的来源。

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

它是通过deploy_via属性进行配置。右边的数值是copy

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

+0

的问题不是在代码中传递的方式,这是角色的部署目标。 'remote'策略对于'app'角色来说很好,但我想要的是根据'db'角色停止部署,因为它不需要访问我们的源代码。 –

+0

好的。那么,我们可以看到更多的conf文件吗?如果我很好地阅读文档,我会使用角色命令而不是服务器命令。像:角色:DB%(重){我-DB服务器}(参见:https://medium.com/p/ba896a142ac) –

+0

我增加了配置的其余部分的问题。不幸的是,使用'role'并没有帮助 –