Symfony2,AWS Beanstalk:如何将供应商作为文件而不是 git-submodules 推送到 repo
Posted
技术标签:
【中文标题】Symfony2,AWS Beanstalk:如何将供应商作为文件而不是 git-submodules 推送到 repo【英文标题】:Symfony2, AWS Beanstalk: how to push vendor as files not git-submodules to repo 【发布时间】:2013-02-27 20:04:46 【问题描述】:我们在 AWS Beanstalk 应用程序上使用 Symfony2。对于部署,我们调整了部署脚本以在应用程序上传后执行 composer install。
尽管这在理论上可行,但它也有一些缺点 - 主要是不断增加的部署时间(有时会导致服务器超时)以及对其他服务器可用性的依赖性增加。
我读到有人将vendor/*
复制到 tmp-dir 并在部署后将其移回speed-up the deployment。
这确实很有帮助,但我们经常更新我们的composer.json
,所以我们仍然需要在部署过程中安装 composer。我们认为最好的方法是将所有依赖项 (vendor/*
) 作为文件包含在 repo 中,并在部署期间跳过 composer install。
不幸的是,大多数库都包含在 git-submodules 中,AWS 不支持子模块(所有文件都必须在 repo 中)。
那么我的问题来了:
删除所有 git 子模块并提交真实文件的最佳方法是什么?
我尝试过结合:
git submodules --recursive foreach
使用How do I remove a submodule? 但没有成功。
【问题讨论】:
【参考方案1】:你可以试试这个工作流程:
创建一个新的发布文件夹 在新文件夹中签出最新版本的代码 将“供应商”从当前活动的发布文件夹复制到新的发布文件夹中 运行“composer.phar install”这样,composer 只会更新版本之间发生变化的库。
我成功地将它与 capistrano 一起使用(还有一个名为 capifony 的 Symfony 特定版本)可以帮助您。特别是因为它可以保留您的 git 存储库的克隆,因此推出新版本的速度要快得多,并且部署和回滚是单行的。
【讨论】:
以上是关于Symfony2,AWS Beanstalk:如何将供应商作为文件而不是 git-submodules 推送到 repo的主要内容,如果未能解决你的问题,请参考以下文章
使用 Amazon Elastic Beanstalk 部署 symfony2.1 应用程序
在 AWS 上的 symfony 2.8 应用程序中更改根目录 - Elastic Beanstalk
如何在中国区域的AWS beanstalk实例上部署美国区域的AWS beanstalk实例
如何解决在 aws 上打开 symfony2 安装时出现 403 Forbidden 错误?