Jim*_*Jim 5 git heroku amazon-s3 redmine s3fs
我知道可以使用Fuse(s3fs [或s3fsr ruby gem?])安装Amazon S3存储桶。
我的案件是特定于Heroku的。
Heroku的文件系统对于可伸缩性等是只读的,但是有没有办法在Heroku的文件系统中挂载amazon s3?
就我而言,我在Heroku上使用Redmine,并希望使用Redmine的内置git存储库管理将代码审阅链接到我的问题。Redmine需要将存储库克隆到本地目录,这是可能的,但在Heroku上不是持久的。
我希望Redmine在已安装的S3存储桶上维护一个git存储库。这可能吗?如果有可能,那将有多慢?还有其他替代方法可以做到这一点吗?
我还没有找到问题的完美答案,但这是一个不错的解决方法。
您可以通过在项目根目录创建一个名为 Procfile 的文件来覆盖默认的 Heroku 启动脚本(以及更多脚本)。
这是 Procfile :
# run custom boot scirpt
web: sh /app/config/web-boot.sh
Run Code Online (Sandbox Code Playgroud)
它告诉 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
Run Code Online (Sandbox Code Playgroud)
然后你可以通过指定 '/tmp/repos/[YOUR_REPO]' 将 Git 存储库添加到你的 Redmine 项目中
当您将更改推送到 Bitbucket 时,您可以使用Redmine Bitbucket Hook 插件将更改拉取到存储库。
像这样拥有私钥并不理想,但在我的具体情况下,该密钥对于该应用程序来说是唯一的,并且仅用于获得对我的代码存储库的只读访问权限。