2017-08-26 126 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)在加载模式之前存在。