【问题标题】:Heroku: Using external mount in local filesystemHeroku:在本地文件系统中使用外部挂载
【发布时间】:2012-11-27 13:42:12
【问题描述】:

我知道可以使用 Fuse(s3fs [或 s3fsr ruby​​ gem?])安装 Amazon S3 存储桶。

我的案例是 Heroku 特有的。

Heroku 的文件系统在可扩展性等方面是只读的,但是有没有办法在 Heroku 的文件系统中挂载 amazon s3?

就我而言,我在 Heroku 上使用 Redmine,并希望使用 Redmine 的内置 git 存储库管理将代码审查链接到我的问题。 Redmine 需要将存储库克隆到本地目录,这在 Heroku 上是可能的,但不是持久的。

我希望 Redmine 在已安装的 S3 存储桶上维护一个 git 存储库。这可能吗?如果有可能,那会有多慢?是否有其他替代方法可以实现这一目标?

【问题讨论】:

  • Heroku 的文件系统不是只读的。但是,由于它们的可扩展性要求,使用任何非临时数据写入它确实会导致问题。

标签: git heroku amazon-s3 redmine s3fs


【解决方案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 将更改拉取到您的存储库。

希望有这样的私钥并不理想,但在我的具体情况下,这个密钥是这个应用程序独有的,仅用于获得对我的代码存储库的只读访问权限。

【讨论】:

    【解决方案2】:

    请注意 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      相关资源
      最近更新 更多