Heroku:在本地文件系统中使用外部安装

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存储库。这可能吗?如果有可能,那将有多慢?还有其他替代方法可以做到这一点吗?

Jim*_*Jim 2

我还没有找到问题的完美答案,但这是一个不错的解决方法。

您可以通过在项目根目录创建一个名为 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 插件将更改拉取到存储库。

像这样拥有私钥并不理想,但在我的具体情况下,该密钥对于该应用程序来说是唯一的,并且仅用于获得对我的代码存储库的只读访问权限。