我知道可以使用Fuse(s3fs[或s3fsr-ruby gem?])安装AmazonS3存储桶。
我的案例是针对赫罗库的。
Heroku的文件系统是只读的,可扩展性等等,但有没有办法在Heroku文件系统中安装amazons3?
在我的案例中,我在Heroku上使用了Redmine,并希望使用Redmine内置的git存储库管理将代码审查与我的问题联系起来。Redmine需要将存储库克隆到本地目录,这是可能的,但在Heroku上不持久。
我希望Redmine在一个挂载的S3 bucket上维护一个git存储库。这可能吗?如果可能的话,速度会有多慢?有其他替代方案可以实现这一点吗?
我还没有找到问题的完美答案,但这里有一个可以解决的方法。
您可以通过在项目根目录下创建一个名为Procfile的文件来覆盖默认的Heroku启动脚本(以及更多)。
这是Procfile:
# run custom boot scirpt
web: sh /app/config/web-boot.sh
它告诉Heroku这个脚本引导Redmine。
我使用的Bitbucket带有一个私有存储库,所以我创建了一个SSH密钥对,并将它们放在"config/SSH/"中。然后,我将公钥添加到我的Bitbucket帐户的部署密钥中,并将Bitbucket的公钥添加到"config/ssh/now_hosts"文件中
这是"config/web-boot.sh"文件:
# move ssh keys
mkdir /app/.ssh
cp /app/config/ssh/* /app/.ssh/
# git clone code repos
mkdir /tmp/repos
# Do this for every repo you want to clone
git clone --bare ssh://git@bitbucket.org/[YOUR_ACCOUNT]/[YOUR_REPO].git /tmp/repos/[YOUR_REPO]
git --git-dir=/tmp/repos/[YOUR_REPO] remote add origin ssh://git@bitbucket.org/[YOUR_ACCOUNT]/[YOUR_REPO].git
git --git-dir=/tmp/repos/[YOUR_REPO] fetch origin
# run Unicorn http server
cd /app
bundle exec unicorn -p $PORT -c ./config/unicorn.rb
然后,您可以通过指定"/tmp/reso/[your_REPO]"将Git存储库添加到您的Redmine项目中
当您将更改推送到Bitbucket时,您可以使用Redmine Bitbucket Hook插件将更改拉到存储库中。
有一个私钥这样希望是不理想的,但在我的特定情况下,这个密钥是这个应用程序独有的,只用于获得对我的代码存储库的只读访问权限。
请注意,Heroku现在在启动时在.profile.d/中运行脚本。
https://devcenter.heroku.com/articles/profiled
对于,您还可以添加一个"git-push"post-commit钩子(在.git/hooks/post-commit中),它应该在每次本地提交后将所有更改推送到BitBucket。
https://www.kernel.org/pub/software/scm/git/docs/githooks.html