2017-08-08 77 views
5

我想將我的php站點從虛擬機遷移到Docker容器。我的網站將所有上傳的文件保留到uploads目錄。現在我想將所有文件傳輸到S3 Storage,並將進一步的上傳保存到Amazon S3。但我不想重寫php文件上傳類。是否可以在Docker中創建符號鏈接文件夾或虛擬文件夾,以便所有在uploads/**路徑上的寫入和讀取都被重定向到S3存儲。Docker:將`/ uploads`目錄綁定到Amazon S3 Storage

Docker支持S3 Storage Driver但我是新來的碼頭,並不知道如何將文件夾映射到dockerfile中的s3存儲。沒有其他例子我找到了。

謝謝你的幫助。

更新:請參閱Taruns answer。如果您也知道,託管環境上的AWS Storage Gateway是唯一的一個很好的解決方案,請注意或分享您的想法。

回答

4

您發佈的S3存儲鏈接用於Docker Registry設置,不適用於Docker卷。您需要的是將硬盤上的文件夾映射到容器。因此,讓我們假設您將主機上的/var/www/uploads映射到容器內的uploads

現在你想要的是/var/www/uploads作爲S3支持的文件夾實際掛載。爲此,亞馬遜推出了AWS Storage Gateway。您可以使用它在您的系統上創建一個支持S3的文件夾。下面是來自亞馬遜的文章,詳細介紹瞭如何配置相同

http://docs.aws.amazon.com/storagegateway/latest/userguide/ManagingLocalStorage-common.html

+0

哦,謝謝你的澄清。這是否意味着它無法在碼頭級別解決。我們必須爲此配置主機環境?但是如果我無法訪問主機環境,我只想準備docker鏡像,以便它可以在任何地方運行。 – tenbits

+0

我懷疑有兩個原因。如果你看看他們的設置,它說'選擇一個實例類型,我們推薦m4.xlarge實例類型',因此在容器中運行它是沒有意義的。接下來他們提供預先安裝的設置,因此您可以在任何地方/任何地方做到這一點 –

+0

謝謝您的時間,塔倫。最後,我想要問清楚的圖片:當瀏覽器請求一些上傳的圖像時,請求會進入我們的容器到'upload'文件夾,然後它到達我們系統'/ var/wwww /上傳「,並從那裏獲取 AWS Storage Gateway處理'read'。當文件不存在時,它會轉到雲中,下載文件並將其傳回給用戶。我的理解是,管道是正確的嗎?再次感謝! – tenbits