我知道可以使用Fuse(s3fs [或s3fsr ruby gem?])安装Amazon S3存储桶。
我的案例是针对Heroku的。
Heroku的文件系统只是为了可扩展性,但是有没有办法在Heroku的文件系统中安装amazon s3?
就我而言,我在Heroku上使用Redmine,并希望使用Redmine的内置git存储库管理将代码评审链接到我的问题。 Redmine需要将存储库克隆到本地目录,这在Heroku上可能但不是持久的。
我希望Redmine在已安装的S3存储桶上维护一个git存储库。这可能吗?如果有可能,那会有多慢?还有其他替代方法可以达到这个目的吗?
答案 0 :(得分:1)
我没有找到问题的完美答案,但这是一个很好的解决方法。
您可以通过在项目的根目录下创建一个名为Procfile的文件来覆盖默认的Heroku启动脚本(以及更多)。
这是Procfile:
# run custom boot scirpt
web: sh /app/config/web-boot.sh
它告诉Heroku这个脚本启动了Redmine。
我正在使用Bitbucket和私有存储库,因此我创建了一个SSH密钥对并将它们放在'config / ssh /'中。然后,我将公钥添加到我的Bitbucket帐户的部署密钥中,并将Bitbucket的公钥添加到我的'config / ssh / know_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 / repos / [YOUR_REPO]'
将Git存储库添加到Redmine项目中当您将更改推送到Bitbucket时,可以使用 Redmine Bitbucket Hook plugin 将更改提取到存储库。
使用这样的私钥是不理想的,但在我的具体情况下,此密钥对于此应用程序是唯一的,仅用于获取对我的代码存储库的只读访问权。
答案 1 :(得分:0)
请注意,Heroku现在在启动时在.profile.d /中运行脚本。
https://devcenter.heroku.com/articles/profiled
对于你也可以添加一个'git push'后提交钩子(在.git / hooks / post-commit中),它应该在每次本地提交后将所有更改推送到BitBucket。
https://www.kernel.org/pub/software/scm/git/docs/githooks.html