2017-08-24 61 views
2

我試圖在Linux Docker容器內的Azure上運行ghost Docker圖像。這非常容易啓動並運行using a custom Docker image for Azure Web App on Linux並將其指向ghost的官方碼頭中心圖像。在Azure Web應用程序中的Docker重啓時保留內容

不幸的是,official docker image存儲/ var/lib/ghost路徑上的所有數據,這些數據在重新啓動時並未保留,所以無論何時重新啓動容器,我的所有內容都會被刪除,並最終恢復默認的ghost安裝。

Azure不會讓我執行任意命令,你基本上將它指向泊塢窗圖像,並從那裏啓動,因此我不能使用-v命令行參數來映射卷。如果這將有助於Docker鏡像配置入口點。

任何建議將是偉大的。謝謝!

回答

1

您有幾種選擇:

  1. 你可以通過創建一個自定義圖像裝載碼頭工人容器內的文件共享,然後將數據存儲那裏。有關更多詳細信息,請參見these docs
  2. 您可以切換到新的container instances,因爲它們提供卷支持。
  3. 您可以切換到Azure Container Service。這需要像Kubernetes這樣的協調員,並且可能比您想要的要多,但它也提供了更多的靈活性,提供了更好的可靠性和擴展性以及其他好處。
+0

謝謝,選項1看起來像它可能有一些潛力,但我假設我然後需要將我的文件共享訪問鍵烤到碼頭構建這使得不可能與任何人分享。 –

+1

你沒有提到在你的問題中共享,所以很難理解你的場景,但你可以指定文件共享密鑰作爲環境變量,以便其他人可以指定他們自己的密鑰。 –

+0

你是對的我沒有,我只是想,如果我打算爲此建立一個自定義的dockerfile,我希望能夠分享它。我將嘗試使用環境變量創建自定義圖像並查看其工作原理。 –

1

您必須使用共享卷將容器/var/lib/ghost目錄的內容映射到主目錄。這樣,您的數據將保留在您的主機目錄中。

爲此,請使用以下命令。

$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:1-alpine 
+0

不幸的是我沒有從命令行運行,更新了我的問題以澄清 –

1

我從來沒有使用過Azure,所以我不是100%確定以下內容適用。但是如果你通過CLI連接Docker,它很有可能會適用。

docker中的持久性與卷一起處理。它們基本上在容器的文件系統樹內安裝到外部目錄中。從你的文字我明白,你想要在/home/site/wwwroot內部/var/lib/ghost path存儲在內部的內容。要做到這一點,你會叫搬運工這樣的:

$ docker run [...] -v /var/lib/ghost:/home/site/wwwroot ghost

+0

不幸的是,我沒有從命令行運行,更新了我的問題以澄清 –

+0

爲了不好。我在Docker for Azure文檔中發現了這個:https://docs.docker.com/docker-for-azure/persistent-data-volumes/ – fzgregor

+0

謝謝,但我沒有使用swarm我正在使用Azure Web App在Linux上:https://docs.microsoft.com/en-us/azure/app-service-web/app-service-linux-using-custom-docker-image –

1

不幸的是,在Linux上的Azure Web應用程序中不支持將持久存儲(或將您自己的存儲)設置爲特定路徑。 這就是說,你可以玩ssh並嘗試配置ghost指向/ home /而不是/ var/lib /。 我在這裏準備了一個docker鏡像:https://hub.docker.com/r/elnably/ghost-on-azure,其中添加了dockerfile和代碼的ssh功能:https://github.com/ahmedelnably/ghost-on-azure/tree/master/1/alpine

通過配置您的Web應用程序來使用elnably/ghost-on-azure:latest,瀏覽到網站(啓動容器)並轉到ssh頁面.scm.azurewebsites.net,以瞭解更多關於SSH檢查這個鏈接:https://aka.ms/linux-ssh

+0

謝謝,這是超級有用的。實際上,我使用了一種類似的策略,只是購買了一個存儲節點映像,然後通過scm連接到ssh,並從那裏修改了容器。我將嘗試安裝文件共享,然後從自定義映像安裝到該文件中,然後查看我如何繼續。 –

相關問題