使用Phusion baseimage-docker及其my_init进程时如何添加容器后启动脚本?

时间:2018-07-14 18:00:51

标签: ubuntu docker phusion runit

我们使用的是Phusion的baseimage-docker作为基本Docker图像(实际上,我们使用passenger-docker image作为我们的基本图像,依次使用了baseimage-docker和{{1 }}的讨论是在my_init级别的。)

它有一个定义明确的过程,可以将我们自己的脚本插入到容器生命周期的baseimage-dockerstartuppre_shutdown步骤中,就像documented here一样。照这样复制我们要在post_shutdown中运行的脚本

Dockerfile

然后COPY app_startup.sh /etc/my_init.d/app_startup.sh COPY app_pre_shutdown.sh /etc/my_init.pre_shutdown.d/app_pre_shutdown.sh COPY app_post_shutdown.sh /etc/my_init.post_shutdown.d/app_post_shutdown.sh 将其作为流程的一部分。 深入研究my_init脚本本身,我可以看到这些附加脚本的执行发生在哪里,例如在启动时,它在my_init函数main: run_startup_files和函数run_startup_files中被调用您可以看到调用了添加到目录中的脚本。

类似地,我可以看到它们在哪里处理mainpre_shutdown

我想知道有什么方法可以继续使用此post_shutdown过程,并能够添加 post 启动步骤,该步骤调用为图像定义的脚本吗?这将不同于此过程中的最后一个启动步骤,而是在容器启动并运行并且my_init个步骤直接执行(或位于该步骤的下游)之后执行的所有其他步骤之后,首先执行的操作之一它)在启动时已经完成。

我不是很肯定,但是在我看来my_init确实会在整个容器的生命周期at this point内持续存在,因此不确定将此步骤添加到何处已经是{{1 }}。

我希望以一种与该my_init流程已经工作的方式一致的方式进行此启动后步骤,而不需要维护自定义my_init脚本,以便我们可以继续利用将来更新时的Phusion版本的脚本,但是如果目前没有其他方法可以使用,则建议您使用推荐的方法来修改和实现自己的my_init脚本

my_init之外可能有一些可以利用的东西,这是标准Ubuntu服务器启动和运行过程的一部分,该过程在my_init已经运行容器之后接管(通过command it spawns ),例如容器启动时的 cron式/一次性运行或其他无需替换或修改my_init即可运行的 init-ish 步骤

想法?

0 个答案:

没有答案