2012-12-10 74 views
4

我知道可以使用Fuse(s3fs [或s3fsr ruby​​ gem?])掛載Amazon S3存儲桶。Heroku:在本地文件系統中使用外部掛載

我的情況特定於Heroku。

Heroku的文件系統是隻讀的可擴展性等,但有沒有辦法在Heroku的文件系統中掛載amazon s3?

就我而言,我在Heroku上使用Redmine,並希望使用Redmine的內置git存儲庫管理將代碼評論與我的問題相關聯。 Redmine需要將存儲庫克隆到本地目錄,這在Heroku中是可能的但不是持久的。

我希望Redmine在裝載的S3存儲桶上維護一個git存儲庫。這可能嗎?如果可能的話,那會有多慢?有沒有其他的辦法來實現這一目標?

+0

Heroku的文件系統不是隻讀的。但是,如果寫入非臨時性數據以外的任何內容,確實會因可擴展性要求而導致問題。 –

回答

1

我還沒有找到我的問題的完美答案,但這裏有一個確定的解決方法。

您可以通過在項目的根目錄下創建名爲Procfile的文件來覆蓋默認的Heroku引導腳本(以及更多)。

這裏的Procfile:

# run custom boot scirpt 
web: sh /app/config/web-boot.sh 

它講述的Heroku,該腳本靴子管理平臺。

我使用Bitbucket的私有存儲庫,所以我創建了一個SSH密鑰對並將它們放在'config/ssh /'中。然後,我添加了公鑰給我的到位桶帳戶的部署密鑰和補充到位桶的公鑰來我的「配置/ SSH/know_hosts」文件

這裏的「配置/ 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://[email protected]/[YOUR_ACCOUNT]/[YOUR_REPO].git /tmp/repos/[YOUR_REPO] 
git --git-dir=/tmp/repos/[YOUR_REPO] remote add origin ssh://[email protected]/[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 

然後,你可以通過指定剛纔添加的Git倉庫到你的管理平臺項目「的/ tmp /回購/ [YOUR_REPO]」

您可以使用Redmine Bitbucket Hook plugin拉資料庫修改時,您將更改推送到到位桶。

這是不理想的,有這樣一個私人鑰匙,但在我的具體情況下,這個密鑰是唯一的這個應用程序,只用於獲得只讀訪問我的代碼庫。

相關問題