2017-08-26 125 views
0

我試圖掛鉤到OpenShift中的應用程序創建事件 - 如果這樣的事件存在。Openshift應用程序生命週期事件 - 應用程序創建事件?

原因是,我想有一個命令運行(理想情況下在一個新的pod中),用於創建數據庫模式。它在應用程序映像中沒有意義,因爲我只需要運行一次 - 創建應用程序時。 我已經查看了pod生命週期掛鉤(https://docs.openshift.com/enterprise/3.1/dev_guide/deployments.html#pod-based-lifecycle-hook),但是每次有新部署時都會發生這些事件。所以對於我的用例來說這也經常是這樣。

當創建一個Openshift應用程序時,有沒有辦法讓圖像只運行一次?

+1

人們仍然對此使用生命週期掛鉤,但會在持久卷中使用標誌,或檢查數據庫的內容以確定是否需要第一次初始化數據庫。如果這是永久性部署,最安全的方法是手動運行該步驟。 –

+0

謝謝,是的同意。我也看着使用一個工作(https://docs.openshift.com/container-platform/3.5/dev_guide/jobs.html)。如果工作可以成爲模板的一部分,這將是一件好事。 – Magick

+1

他們應該能夠被創建爲模板的一部分。你想做什麼,你認爲你不能把它們放在模板中? –

回答

1

你在這裏的評論正確的軌道上。在OpenShift v2中,生命週期鉤子存在相同的場景。例如,對於我們的OpenShift v2中的WordPress快速入門,例如,我們將檢查每個新部署中是否創建了數據庫。如果沒有,我們初始化了一個與應用程序名稱相同的空數據庫(在這種情況下讓WordPress創建模式後,但這是在這裏需要相同的想法):OpenShift v2 WordPress deploy action hook

在OpenShift v3中,有幾種方法實現類似的生命週期鉤子,但我們現在在模板中使用的常見模式是利用執行新的窗格以在部署階段之前運行數據庫設置步驟的能力:OpenShift v3 CakePHP pre deploy lifecycle hook

遵循此模式,您會添加您的代碼來生成您的數據庫架構在您的源回購中的v3 CakePHP migrate-database.sh文件中,並使用預部署生命週期掛鉤執行腳本(通過execNewPod),首先檢查數據庫/架構(select *從一定的知識限制1)在加載模式之前存在。